我在坚持多对多自我参照关系方面遇到了问题。
我收到错误消息:



当我删除所有与之一起保存的子窗体项时,会发生这种情况。
至少留一个不会出错。另外,如果我最初保存没有 child 的实体,则一切正常。

/**
  * West\AlbumBundle\Entity\Album
  *
  * @ORM\Table(name="albums")
  * @ORM\Entity(repositoryClass="West\AlbumBundle\Entity\AlbumRepository")
  * @ORM\HasLifecycleCallbacks
  */
 class Album extends Entity implements CrudEntity
 {

     /**
      * @ORM\ManyToMany(targetEntity="Album")
      * @ORM\JoinTable(name="albums_relations",
      *         joinColumns={@ORM\JoinColumn(name="album_id", referencedColumnName="id")},
      *         inverseJoinColumns={@ORM\JoinColumn(name="related_album_id", referencedColumnName="id")}
      * )
      * @var ArrayCollection
      */
      protected $related_albums;
}

如果您正在使用Symfony2表单进行测试,请记住设置

最佳答案

我发现问题发生在例如从MergeDoctrineCollectionListener.onBind()调用方法UnitOfWork.scheduleCollectionDeletion且PersistentCollection对象已被克隆('by_reference'= false)时。

解决此问题的方法是在MergeDoctrineCollectionListener类中的以下行中添加注释:

//$collection->clear();

关于php - 教义2 ManyToMany自引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12077084/

10-16 07:38