Comment classer les résultats avec findBy () dans Doctrine


147

J'utilise la findBy()méthode sur un référentiel Doctrine:

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

Comment puis-je commander les résultats?

Réponses:


307

Le deuxième paramètre de findByest pour ORDER.

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

7
Apparemment, la documentation de l'API sur le site Web de doctrine ne correspond pas au code source réel. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… montre que vous avez raison.
Patrick James McDougle

Puis-je définir un ordre multiple par?
Fabien Papet

9
Un peu tard pour trouver cette question, mais pour quiconque s'interroge à ce sujet, oui, vous pouvez ajouter plusieurs "ordre par", ajoutez simplement plus d'éléments dans ce second tableau de paramètres et définissez les noms de champ "ASC" ou "DESC". IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
Et si AcmeBinBundle: Marks est lié ManyToOne avec "produit" et que nous voulons commander par un champ dans l'objet produit? Est-ce possible?
Rodolfo Velasco

2
@RodolVelasco findByest utilisé pour la scène de requête de base, pour une scène plus compliquée, utilisez plutôt une requête. comme $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'));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.