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?

Fata Morgana
quelle

Antworten:

306

Der zweite Parameter von findByist für ORDER.

$ens = $em->getRepository('AcmeBinBundle:Marks')
          ->findBy(
             array('type'=> 'C12'), 
             array('id' => 'ASC')
           );
xdazz
quelle
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')
               );
Jethik
quelle
10
$cRepo = $em->getRepository('KaleLocationBundle:Country');

// Leave the first array blank
$countries = $cRepo->findBy(array(), array('name'=>'asc'));
Bhaktaraz
quelle