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 ความช่วยเหลือใด ๆ ที่ชื่นชมมาก