Jak uporządkować wyniki za pomocą funkcji findBy () w Doctrine


147

Używam findBy()metody w repozytorium Doctrine:

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

Jak mogę zamówić wyniki?

Odpowiedzi:


307

Drugi parametr findBydotyczy ORDER.

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

7
Najwyraźniej dokumentacja API na stronie doktryny nie jest zgodna z rzeczywistym kodem źródłowym. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/... pokazuje, że masz rację.
Patrick James McDougle

Czy mogę ustawić wiele zamówień?
Fabien Papet

9
Trochę późno znalazłem to pytanie, ale dla każdego, kto się nad tym zastanawiał, tak, możesz dodać wiele elementów „uporządkuj według”, po prostu dodaj więcej elementów w drugiej tablicy parametrów i zdefiniuj nazwy pól „ASC” lub „DESC”. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
A co jeśli AcmeBinBundle: Marks jest powiązany ManyToOne z „produktem” i chcemy złożyć zamówienie według pola w obiekcie produktu? Czy to możliwe?
Rodolfo Velasco

2
@RodolVelasco findByjest używane do podstawowej sceny zapytania, w przypadku bardziej skomplikowanej sceny użyj zamiast tego zapytania. jak $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'));
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.