web-dev-qa-db-fra.com

Doctrine2: vérifier si la valeur existe dans Doctrine Collection

Comment puis-je vérifier que la valeur donnée existe dans le champ Doctrine Collection (ManyToMany relation)?

Par exemple, j'essaie de:

$someClass = $this->
             getDoctrine()->
             getRepository('MyBundle:MyClass')->
             find($id);

if (!$entity->getMyCollectionValues()->get($someClass->getId())) {

    $entity->addMyCollectionValue($someClass);

}

Mais ce n'est bien sûr pas correct. Alors, comment éviter les clés en double?

13
spiil

Vous pourriez faire:

$object = $this->getDoctrine()->getRepository('MyBundle:MyClass')->find($id);

if ( !$entity->getMyCollectionValues()->contains($object) ) {
    $entity->addMyCollectionValue($object);
}

Vous pouvez consulter les fonctions disponibles de Doctrine ArrayCollection dans http://www.doctrine-project.org/api/common/2.1/class-Doctrine.Common.Collections. ArrayCollection.html

30
Airam