Cara memesan hasil dengan findBy () di Doctrine


147

Saya menggunakan findBy()metode pada repositori Doctrine:

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

Bagaimana saya bisa memesan hasilnya?

Jawaban:


307

Parameter kedua findByadalah untuk ORDER.

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

7
Tampaknya dokumentasi API di situs web doktrin tidak cocok dengan kode sumber yang sebenarnya. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… menunjukkan bahwa Anda benar.
Patrick James McDougle

Bisakah saya mengatur pesanan mutliple?
Fabien Papet

9
Agak terlambat menemukan pertanyaan ini, tetapi untuk orang lain yang bertanya-tanya tentang hal ini, ya Anda dapat menambahkan beberapa "order by", cukup tambahkan lebih banyak elemen dalam array parameter kedua dan tentukan nama bidang 'ASC' atau 'DESC'. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
Bagaimana jika AcmeBinBundle: Marks terkait ManyToOne dengan "produk" dan kami ingin memesan berdasarkan bidang dalam objek produk? Apakah ini mungkin?
Rodolfo Velasco

2
@RodolVelasco findBydigunakan untuk adegan kueri dasar, untuk adegan yang lebih rumit, gunakan kueri. seperti $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'));
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.