在我的图片实体中,我有一个图像属性。 (其他属性是关于 alt、style 等)。我注意到该属性未设置为 nullable= false。我决定改变这一点,在进行 Doctrine 模式更新后,我注意到列 image_id 仍然设置为可为空。
这让我重新思考我的设计,并将 Picture 实体设置为从 Image 实体扩展。接下来我会尝试一下。我通常避免在 Doctrine 中使用与文件相关的实体进行类继承,因为它往往会导致太多问题。
但是我想知道。这是 Doctrine 中预期的行为吗?到目前为止,我的一对一关系已全部设置为可为空。是否不可能使它们不可为空?这是有道理的,因为两个密切相关的实体合并为一个实体可能会更好。不过我认为这种担忧应该由开发者来选择。就像我的例子一样,我不愿意在图像实体上使用继承。
尽管所有示例都显示可为空的外键,但官方文档并不是很明确。
代码如下:
/**
* @var
*
* @ORM\OneToOne(targetEntity="AnyRoutes\SiteBundle\Entity\Image", cascade={"persist", "remove"})
* @@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false)
*/
private $image;
最佳答案
@@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false)
检查删除@@ORM\中的冗余@是否有帮助
关于symfony - 在 Symfony2/Doctrine : Setting foreign key to not null seems impossible in one to one relationship 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28930167/