Doctrine2许多自我参考



我在坚持多对多自引用关系方面遇到了问题。我收到错误:

在链配置的命名空间中找不到类"Doctrine\ORM\Persisters\ManyToManyPersister"

当我删除与它们一起保存的所有子窗体项目时,就会发生这种情况。至少留下一个不会出错。此外,如果我最初保存的实体没有子级,一切都很好。

/**
  * WestAlbumBundleEntityAlbum
  *
  * @ORMTable(name="albums")
  * @ORMEntity(repositoryClass="WestAlbumBundleEntityAlbumRepository")
  * @ORMHasLifecycleCallbacks
  */
 class Album extends Entity implements CrudEntity
 {
     /**
      * @ORMManyToMany(targetEntity="Album")
      * @ORMJoinTable(name="albums_relations",
      *         joinColumns={@ORMJoinColumn(name="album_id", referencedColumnName="id")},
      *         inverseJoinColumns={@ORMJoinColumn(name="related_album_id", referencedColumnName="id")}
      * ) 
      * @var ArrayCollection
      */
      protected $related_albums;
}

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

"by_reference"=>错误

我发现,当从MergeDoctrineCollectionListener.onBind()调用方法UnitOfWork.scheduleCollectionDelegation并且PersistentCollection对象已克隆('by_reference'=false)时,就会出现问题

这个问题的快速解决方案是在MergeDoctrineCollectionListener类中注释以下行:

//$collection->clear();

相关内容

  • 没有找到相关文章

最新更新