我在坚持多对多自我参照关系方面遇到了问题。
我收到错误消息:
当我删除所有与之一起保存的子窗体项时,会发生这种情况。
至少留一个不会出错。另外,如果我最初保存没有 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/