我的一张表有一个多对多的自引用非相等关系。数据库表看起来像:
Node
- id
Node_Relationship
- parent_id (FK of Node.id)
- child_id (FK of Node.id)
- PRIMARY KEY (parent_id, child_id)
这会导致 Doctrine 出现问题,为该 ID 组合提供重复条目。
该线程http://www.doctrine-project.org/jira/browse/DC-329在使用 refClassRelationAlias 的最底部提到了一个修复。
我的问题是,我该如何实现呢?我正在使用 PHP 注释方法来标记我的类,但他们只提到使用 YAML 文件,而我目前没有这样做。
我可以在不将所有内容完全重做为 YAML 文件的情况下实现这一点吗?如果是这样,怎么做?
谢谢。
更新:
我的两个字段注释如下:
/**
* @ORM\ManyToMany(targetEntity="Module", inversedBy="children")
* @ORM\JoinTable(name="module_relationships",
* joinColumns={@ORM\JoinColumn(name="child_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="parent_id",
* referencedColumnName="id")}
* )
*/
protected $parents;
/**
* @ORM\ManyToMany(targetEntity="Module", mappedBy="parents")
*/
protected $children;
当我向父母或孩子添加一些东西时,我也将它设置为相反的。我使用 set 并使用对象的 ID 作为键,以避免 ArrayCollection 中的重复。
他们是否修复了错误而我只是做错了什么?或者是否仍然存在具有不同修复程序的错误。我正在使用 Symfony 2.0.12 版。
谢谢。
更新2:原来我无意中创建了重复项。一旦我更改了功能以实际阻止它们,它似乎工作得很好。