DoctrineのfindBy()で結果を注文する方法


147

私はfindBy()Doctrineリポジトリでメソッドを使用しています:

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

結果を注文するにはどうすればよいですか?

回答:


307

の2番目のパラメーターfindByはORDER用です。

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

7
どうやら、Doctrine WebサイトのAPIドキュメントは実際のソースコードと一致しません。github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/…は、あなたが正しいことを示しています。
Patrick James McDougle 2013年

複数の順序を設定できますか?
Fabien Papet 2014

9
少し遅れてこの質問を見つけましたが、これについて不思議に思う人なら、はい、複数の「order by」を追加し、その2番目のパラメータ配列に要素を追加して、フィールド名「ASC」または「DESC」を定義するだけです。IE: array('priority'=>'ASC','id'=>'ASC')
アーロンBelchamber 2015年

1
AcmeBinBundle:MarksがManyToOneと「製品」に関連付けられており、製品オブジェクトのフィールドで注文したい場合はどうなりますか?これは可能ですか?
ロドルフォベラスコ

2
@RodolVelasco findByは基本的なクエリシーンに使用されます。より複雑なシーンの場合は、代わりにクエリを使用してください。のように$qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->...
xdazz 2015年

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'));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.