【问题标题】:In Symfony2/ Doctrine: Setting foreign key to not null seems impossible in one to one relationship在 Symfony2/Doctrine 中:在一对一关系中将外键设置为不为空似乎是不可能的
【发布时间】:2015-03-08 18:20:33
【问题描述】:

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

这让我重新思考了我的设计,并将 Picture 实体设置为从 Image 实体扩展而来。接下来我会试试的。我通常避免在 Doctrine 中与我的文件相关实体进行类继承,因为它往往会导致太多问题。

不过我想知道。这是教义的预期行为吗?到目前为止,我的一对一关系都已设置为可为空。是否不可能使它们不可为空?这是有道理的,因为将两个密切相关的实体合并为一个实体可能会更好。但是我认为这种关注应该留给开发人员的选择。就我而言,因为我不愿意在图像实体上使用继承。

尽管所有示例都显示可以为空的外键,但官方文档并不是很明确。

代码如下:

/**
     * @var
     *
     * @ORM\OneToOne(targetEntity="AnyRoutes\SiteBundle\Entity\Image", cascade={"persist", "remove"})
     * @@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false)
     */
    private $image;

【问题讨论】:

    标签: symfony doctrine one-to-one notnull


    【解决方案1】:
    @@ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false)
    

    检查删除@@ORM\ 中多余的@ 是否有帮助

    【讨论】:

    • 是的...非常感谢。我变得像鼹鼠一样瞎了!我很惊讶 Doctrine 让我更新模式而不抛出语法错误消息。
    • @user3208611 因为在大多数情况下@ORM\JoinColumn 是可选的,并且具有合理的默认值,因此不需要它。 doctrine-orm.readthedocs.org/en/latest/reference/…
    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2013-01-06
    • 2011-09-02
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多