【问题标题】:Doctrine ManyToOne creates foregin keys and uniqe indexDoctrine ManyToOne 创建外键和唯一索引
【发布时间】:2015-07-06 18:55:19
【问题描述】:

我正在创建一个晚餐计划器,并有一个“列表”对象,其中所有工作日都有自己的字段。我在其中为配方添加了一个 ManyToOne 关系,如下所示:

/**
 * @var integer
 *
 * @ORM\ManyToOne(targetEntity="MatAppen\FrontendBundle\Entity\Recipe")
 * @ORM\JoinColumn(name="tuesday_id", referencedColumnName="id")
 */
private $tuesday;

joinColumn 语句显然是没有必要的,并且已经尝试过没有相同的结果。

我的问题是 Doctrine 在该字段上添加了一个 Uniqe 索引和一个外键(并且所有的类型都相同),这导致一个食谱只能供 1 个用户使用。

知道实体应该看起来如何吗? 这是教义的输出:schema:update --dump-sql

ALTER TABLE lists ADD CONSTRAINT FK_8269FA55B974FE2 FOREIGN KEY (tuesday_id) REFERE
CREATE INDEX IDX_8269FA55B974FE2 ON lists (tuesday_id);

任何提示将不胜感激:)

SQL 错误如下所示:

1062: Duplicate entry '122' for key 'UNIQ_8269FA521671777'

编辑

认为我想要的是多对一的单向关系。原因是列/属性 tuesday 应该只有一个配方,但我的配方不应该知道我的任何列表...

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    问题是您使用的是@ORM\ManyToOne,而您应该使用的是@ORM\ManyToMany

    【讨论】:

    • 但我只想要列表实体中该字段的一个配方?
    • 您是否反转了您在其他实体中的关系?在此处查看 5.4:doctrine-orm.readthedocs.org/en/latest/reference/…
    • 谢谢,是的,这就是我一直在阅读的地方。我认为我想要的是多对一的单向关系。我不需要菜谱就知道这个列表,而且星期二应该只有一个菜谱...(我会更新问题以清除它)...
    • 在这种情况下,我建议阅读以下内容:krueckeberg.org/notes/…
    • 谢谢,我去看看:-)
    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 2021-10-06
    • 1970-01-01
    • 2015-12-16
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多