An User
có một Package
liên kết với nó. Nhiều người dùng có thể tham khảo cùng một gói. User
không thể tồn tại mà không có một Package
định nghĩa. User
nên sở hữu quan hệ. Mối quan hệ là hai chiều, do đó, một Package
không có hoặc nhiều người dùng trong đó.
Những yêu cầu này dẫn đến ManyToOne
quan hệ for User
và OneToMany
quan hệ của Package
trong Doctrine 2. Tuy nhiên, package_id
trong user
bảng (đó là khóa ngoại) cho phép null
các giá trị. Tôi đã thử cài đặt nullable=false
nhưng lệnh:
php app/console doctrine:generate:entities DL --path="src" --no-backup
Nói rằng không có thuộc tính nullable
cho mối quan hệ ManyToOne
. Tôi đang thiếu cái gì?
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;
}
EDIT : đã giải quyết. xin lưu ý rằng điều này là sai (lưu ý dấu ngoặc kép):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
Mặc dù điều này là chính xác:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
package_id
vẫn bị gắn cờ là Null - Có, Mặc định - NULL. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.