Userมีหนึ่งPackageที่เกี่ยวข้องกับมัน ผู้ใช้หลายคนสามารถอ้างถึงแพ็กเกจเดียวกัน Userไม่สามารถดำรงอยู่ได้หากไม่มีการPackageกำหนด Userควรเป็นเจ้าของความสัมพันธ์ ความสัมพันธ์เป็นแบบสองทิศทางดังนั้นจึงPackageมีผู้ใช้เป็นศูนย์หรือมากกว่านั้น
ข้อกำหนดเหล่านี้นำไปสู่ManyToOneความสัมพันธ์UserและOneToManyความสัมพันธ์ของPackageหลักคำสอน 2 อย่างไรก็ตามpackage_idในuserตาราง (นั่นคือคีย์ต่างประเทศ) อนุญาตให้มี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)
package_idยังคงตั้งค่าสถานะเป็น Null - ใช่ค่าเริ่มต้น - NULL ความช่วยเหลือใด ๆ ที่ชื่นชมมาก