Doctrine ODM - очистить / обновить / удалить отношения EmbedDocument - PullRequest
1 голос
/ 11 ноября 2010

У меня проблема с Doctrine ODM. Когда я создаю сущность с простой связью EmbedMany с другим документом (то есть с никнеймом со многими комментариями в качестве встроенных документов) и пытаюсь очистить коллекцию, коллекция все еще существует со всеми элементами:

/** @Document */
class Nickpage
{
   ...

   /** @EmbedMany(targetDocument="Comment") */
   protected $comments = array();

   ...

   public function clearComments()
   {
      $this->comments = array();
      // or:
      // $this->comments = new \Doctrine\Common\Collections\ArrayCollection();
      return $this;
   }
}

Когда я просто загружаю ник-страницу со связанными комментариями и звоню

$nickpage->clearComments();
$dm->persist($nickpage);
$dm->flush();

комментарии все еще существуют. То же самое происходит, когда я удаляю некоторые элементы в комментариях ArrayCollection $, и я сбрасываю ...

Я ошибаюсь при обработке таких отношений (т. Е. Использую ReferenceMany) или это неправильный способ работы со ссылками?

Привет из Германии, Andi

1 Ответ

2 голосов
/ 12 ноября 2010

Вам не нужно звонить, чтобы сохранить, потому что ваша страница уже управляется Doctrine. Вам нужно всего лишь вызвать flush, чтобы отправить обновление в базу данных.

И вам не нужно добавлять метод clearComments. Вы можете использовать метод очистки ArrayCollection:

$nickpage->comments->clear();
...