Подтвердить что ты не робот

Doctrine2 ManyToMany Самостоятельные ссылки

У меня возникают проблемы с сохранением многих многих отношений, связанных со ссылками. Я получаю сообщение об ошибке:

Класс "Doctrine\ORM\Persisters\ManyToManyPersister" не был найден в цепочке имен с цепочкой

Это происходит, когда я удаляю все элементы формы для детей, сохраненные вместе с ними. Если оставить хотя бы один, не делайте ошибок. Кроме того, если я изначально сохраняю объект без детей, все работает нормально.

/**
  * 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, не забудьте установить

"by_reference" = > false

4b9b3361

Ответ 1

Я обнаружил, что проблема возникает, когда вызывается метод UnitOfWork.scheduleCollectionDeletion, например, из MergeDoctrineCollectionListener.onBind(), и объект PersistentCollection был клонирован ('by_reference' = false)

Быстрое исправление этой проблемы - прокомментировать следующую строку в классе MergeDoctrineCollectionListener:

//$collection->clear();