Come ordinare i risultati con findBy () in Doctrine


147

Sto usando il findBy()metodo su un repository Doctrine:

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

Come posso ordinare i risultati?

Risposte:


307

Il secondo parametro di findByè per ORDER.

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

7
Apparentemente la documentazione API sul sito Web di dottrina non corrisponde al codice sorgente effettivo. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… mostra che hai ragione.
Patrick James McDougle,

Posso impostare un ordine multiplo per?
Fabien Papet,

9
Un po 'tardi trovando questa domanda, ma per chiunque si stia chiedendo, sì, puoi aggiungere più "ordina per", basta aggiungere più elementi in quel secondo array di parametri e definire i nomi dei campi' ASC 'o' DESC '. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber,

1
Cosa succede se AcmeBinBundle: Marks è in relazione a ManyToOne con "prodotto" e vogliamo ordinare in base a un campo nell'oggetto prodotto? È posible?
Rodolfo Velasco,

2
@RodolVelasco findByviene utilizzato per la scena di query di base, per una scena più complicata, utilizzare invece la query. come $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'));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.