Як замовити результати за допомогою FindBy () у доктрині


147

Я використовую findBy()метод у сховищі доктрин:

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

Як я можу замовити результати?

Відповіді:


307

Другий параметр для findBy- ЗАМОВИТИ.

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

7
Мабуть, документація API на веб-сайті вчення не відповідає фактичному вихідному коду. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… показує, що ви праві.
Патрік Джеймс МакДугле

Чи можу я встановити взаємний порядок?
Фабієн Папет

9
Трохи запізнюючись з цим питанням, але для тих, хто цікавиться цим питанням, так, ви можете додати кілька "замовлень за", просто додайте більше елементів у цей другий масив параметрів і визначте назви полів "ASC" або "DESC". IE : array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
Що робити, якщо AcmeBinBundle: Marks пов’язаний ManyToOne з "продуктом", і ми хочемо замовити поле в об'єкті продукту? Це можливо?
Родольфо Веласко

2
@RodolVelasco findByвикористовується для базової сцени запиту, для більш складної сцени, замість цього використовуйте запит. як $qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->....
xdazz


10
$cRepo = $em->getRepository('KaleLocationBundle:Country');

// Leave the first array blank
$countries = $cRepo->findBy(array(), array('name'=>'asc'));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.