Как упорядочить результаты с помощью findBy () в Doctrine


147

Я использую findBy()метод в хранилище Doctrine:

$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').
Аарон Белчамбер

1
Что если AcmeBinBundle: Marks связывает ManyToOne с «продуктом», и мы хотим упорядочить по полю в объекте продукта? Это возможно?
Родольфо Веласко

2
@RodolVelasco findByиспользуется для базовой сцены запроса, для более сложной сцены используйте запрос. как $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'));
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.