symfony2 Doctrine用于refClassRelationAlias的PHP注释

时间:2012-05-02 09:32:58

标签: symfony doctrine

我的一张桌子有多对多的自引用非平等关系。数据库表看起来像:

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: 结果我无意中创建了重复项。一旦我改变了功能以实际防止它们,它似乎工作正常。

1 个答案:

答案 0 :(得分:0)

事实证明这是我自己的错。正如我所提到的,当我设置为避免重复值时,我使用id作为键...但是,最初加载的那些没有给出这样的键,所以我实际上导致了重复。

,我在执行此操作之前只是检查它是否包含它,然后才能正常工作。