So bestellen Sie Ergebnisse mit findBy () in Doctrine


147

Ich verwende die findBy()Methode in einem Doctrine-Repository:

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

Wie kann ich die Ergebnisse bestellen?

Antworten:


306

Der zweite Parameter von findByist für ORDER.

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

7
Anscheinend stimmt die API-Dokumentation auf der Doctrine-Website nicht mit dem tatsächlichen Quellcode überein. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… zeigt, dass Sie korrekt sind.
Patrick James McDougle

Kann ich eine Mehrfachreihenfolge festlegen?
Fabien Papet

8
Wenn Sie diese Frage etwas spät finden, können Sie für alle anderen, die sich darüber wundern, mehrere "Reihenfolge nach" hinzufügen. Fügen Sie einfach weitere Elemente in das zweite Parameterarray ein und definieren Sie die Feldnamen "ASC" oder "DESC". IE : array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
Was ist, wenn AcmeBinBundle: Marks ManyToOne mit "Produkt" verknüpft ist und wir nach einem Feld im Produktobjekt bestellen möchten? Ist das möglich?
Rodolfo Velasco

2
@RodolVelasco findBywird für grundlegende Abfrageszenen verwendet. Für kompliziertere Szenen verwenden Sie stattdessen die Abfrage. wie $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'));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.