2015-01-31 5 views
10

Verilen değerlerin Doctrine Collection (ManyToMany ilişkisi) alanında var olup olmadığını nasıl kontrol edebilirim?Doctrine2: Doctrine Collection'da var olup olmadığını kontrol edin

Mesela ben deneyin:

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

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

    $entity->addMyCollectionValue($someClass); 

} 

Ama elbette doğru değil. Yani, yinelenen anahtarlar için nasıl önlenir?

cevap

23

Sen yapabilirdi:

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

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

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

+0

Ah içinde Doktrin ArrayCollection mevcut fonksiyonların bakabiliriz, teşekkürler! İyi çalışıyor! – spiil

+2

Başlangıçta o nesnenin kimliğine sahip olduğumuzda, aradığımız nesneyi almak için başlangıçta başka bir sorgu yürütmeden bir Doktrin yolu var mı? Neden bu kimlikle bir girişi varsa koleksiyona sormuyorum? Bunun için başka bir sorgu ekleyerek Tamam değilim. – grantwparks

+1

@grantwparks Ekleme yapmadan önce kontrolün yapıldığından emin olmak istiyorsanız, içerme() yöntemini ekleme yönteminin içine yerleştirebilirsiniz. – TheGremlyn

İlgili konular