Doctrine'de findBy () ile sonuçları nasıl sıralayabilirim?


148

Ben kullanıyorum findBy()bir Doktrin depo üzerinde yöntemini:

$entities = $repository->findBy(array('type'=> 'C12'));

Sonuçları nasıl sipariş edebilirim?

Yanıtlar:


311

İkinci parametre findBySİPARİŞ içindir.

$ens = $em->getRepository('AcmeBinBundle:Marks')
          ->findBy(
             array('type'=> 'C12'), 
             array('id' => 'ASC')
           );

7
Görünüşe göre, doktrin web sitesindeki API belgeleri gerçek kaynak koduyla eşleşmiyor. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… doğru olduğunuzu gösterir.
Patrick James McDougle

İle birden fazla sipariş belirleyebilir miyim?
Fabien Papet

9
Bu soruyu bulmak biraz gecikti, ancak bunu merak eden herkes için, evet, birden çok "sıralama" ekleyebilirsiniz, sadece bu ikinci parametre dizisine daha fazla öğe ekleyebilir ve 'ASC' veya 'DESC' alan adlarını tanımlayabilirsiniz. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
AcmeBinBundle: Markalar ManyToOne ile "ürün" ile ilişkiliyse ve ürün nesnesindeki bir alana göre sipariş vermek istiyorsak? Bu mümkün mü?
Rodolfo Velasco

2
@RodolVelasco findBy, temel sorgu sahnesi için kullanılır, daha karmaşık sahneler için bunun yerine sorgu kullanın. gibi $qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->....
xdazz

25
$ens = $em->getRepository('AcmeBinBundle:Marks')
              ->findBy(
                 array(), 
                 array('id' => 'ASC')
               );

10
$cRepo = $em->getRepository('KaleLocationBundle:Country');

// Leave the first array blank
$countries = $cRepo->findBy(array(), array('name'=>'asc'));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.