在 Symfony2/Doctrine 中:在一对一关系中,将外键设置为非空似乎是不可能的

In Symfony2/ Doctrine: Setting foreign key to not null seems impossible in one to one relationship

在我的图片实体中,我有一个图像属性。 (其他属性是关于 alt、style 等的)。我注意到该属性未设置为 nullable= false。我决定改变它,在进行了学说架构更新后,我注意到列 image_id 仍设置为可为空。

这让我重新考虑我的设计并将 Picture 实体设置为从 Image 实体扩展。接下来我会试试。我通常避免 class 在 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\ 中的多余@是否有帮助