Doctrine2: проверьте, существует ли значение в коллекции Doctrine
Как я могу проверить, что данное значение существует в поле Doctrine Collection (ManyToMany relation)?
Например, я пытаюсь:
$someClass = $this->
getDoctrine()->
getRepository('MyBundle:MyClass')->
find($id);
if (!$entity->getMyCollectionValues()->get($someClass->getId())) {
$entity->addMyCollectionValue($someClass);
}
Но это, конечно, не правильно. Итак, как избежать дублирования ключей?
Ответы
Ответ 1
Вы можете сделать:
$object = $this->getDoctrine()->getRepository('MyBundle:MyClass')->find($id);
if ( !$entity->getMyCollectionValues()->contains($object) ) {
$entity->addMyCollectionValue($object);
}
Вы можете посмотреть доступные функции Doctrine ArrayCollection в http://www.doctrine-project.org/api/common/2.1/class-Doctrine.Common.Collections.ArrayCollection.html