web-dev-qa-db-ja.com

Doctrine2:Doctrineコレクションに値が存在するかどうかを確認します

指定された値がDoctrine Collection(ManyToMany relation)フィールドに存在することを確認するにはどうすればよいですか?

たとえば、私はしようとします:

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

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

    $entity->addMyCollectionValue($someClass);

}

しかし、それはもちろん正しくありません。では、重複するキーを回避するにはどうすればよいですか?

13
spiil

あなたがすることができます:

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

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

Doctrine ArrayCollection in http://www.doctrine-project.org/api/common/2.1/class-Doctrine.Common.Collections。 ArrayCollection.html

30
Airam