মতবাদ 2 টি বহুবিধে বাতিল / মিথ্যা ব্যবহার করতে পারে না?


110

একটি Userএক হয়েছে Packageএর সাথে জড়িত। অনেক ব্যবহারকারী একই প্যাকেজ উল্লেখ করতে পারেন। সংজ্ঞায়িত Userব্যতীত উপস্থিত থাকতে পারে না PackageUserসম্পর্কের মালিক হওয়া উচিত সম্পর্ক দ্বি নির্দেশমূলক, সুতরাং Packageএর মধ্যে শূন্য বা আরও বেশি ব্যবহারকারী রয়েছে users

এই প্রয়োজনীয়তা হতে ManyToOneজন্য সম্পর্ক Userএবং OneToManyসম্পর্ক Packageমতবাদ 2. তবে package_iduserটেবিল (যে বিদেশী চাবিকাঠি) অনুমতি দেয় nullমান। আমি চেষ্টা করেছি nullable=falseকিন্তু কমান্ডটি স্থাপন করে :

 php app/console doctrine:generate:entities DL --path="src" --no-backup

বলে যে nullableসম্পর্কের কোনও বৈশিষ্ট্য নেই ManyToOneআমি কী মিস করছি?

class User
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
     */
    private $package;

}

class Package
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity="User", mappedBy="package")
     */
    private $users;

}

সম্পাদনা : সমাধান হয়েছে। দয়া করে মনে রাখবেন যে এটি ভুল (নোট ডাবল উদ্ধৃতি):

 @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")

যদিও এটি সঠিক:

@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)

উত্তর:


193

আপনার বহুতো সম্পর্কের জন্য জয়লোকলাম টীকাটি ব্যবহার করুন:

/**
 * @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
 * @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
 */
private $package;

ম্যান্টিটোইন নিজেই শুল্কযুক্ত হতে পারে না কারণ এটি কোনও নির্দিষ্ট কলামের সাথে সম্পর্কিত নয়। অন্যদিকে জোনা কলামটি ডাটাবেসে কলামটি সনাক্ত করে। সুতরাং, আপনি "সাধারণ" বৈশিষ্ট্যগুলি ব্যবহারযোগ্য বা অনন্যের মতো ব্যবহার করতে পারেন!


ধন্যবাদ, আমি চেষ্টা করেছি কিন্তু দুর্ভাগ্যক্রমে কলামটি package_idএখনও নাল - হ্যাঁ, ডিফল্ট - নুল হিসাবে চিহ্নিত হয়েছে। কোন সাহায্যের অনেক প্রশংসা করা হয়।
গ্রেমো

5
কিছুই নয়, একটি ডাবল উদ্ধৃতি সম্পূর্ণরূপে জিনিসটি ভেঙে দেয়। এটা nullable="false"ভুল!
গ্রেমো

আপনি কি ডাটাবেসটিকে পুরোপুরি মুছতে এবং এটি নতুন তৈরি করার চেষ্টা করেছিলেন? আমি কেবলমাত্র আমার ডাটাবেসটিতে দেখেছি (উপরে বর্ণিত একই জয়েন্টক্লাম টীকাটি ব্যবহার করে) এবং এটি নোটনুল হিসাবে পতাকাঙ্কিত!
এসগোয়েটস্কেস 12:51

5
এর জন্য ধন্যবাদ, আমি ভাবছিলাম যে কেন আমি @ORM\Column(nullable=true)আমার বহুস্তরকে অবিরাম করতে পারি না !
স্কট ফ্ল্যাক 0

আপনি যদি সঠিক বিকল্পটি কনফিগার করেন এবং আপনি এখনও ভুল মান সহ আপনার ডাটাবেস কলামটি দেখতে পান, সত্তা পরিচালক হিসাবে মেটাডেটা ক্যাশে সাফ করতে মনে রাখবেন। সিমফোনিতে, আপনি console doctrine:cache:clear-metadataকমান্ডটি ব্যবহার করতে পারেন
ম্যাসিমিলিয়ানো অ্যারিওন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.