Cómo ordenar resultados con findBy () en Doctrine


147

Estoy usando el findBy()método en un repositorio de Doctrine:

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

¿Cómo puedo ordenar los resultados?

Respuestas:


307

El segundo parámetro de findByes para ORDER.

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

77
Aparentemente, la documentación de la API en el sitio web de doctrina no coincide con el código fuente real. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… muestra que está en lo correcto.
Patrick James McDougle

¿Puedo establecer un orden múltiple?
Fabien Papet

9
Un poco tarde para encontrar esta pregunta, pero para cualquiera que se pregunte sobre esto, sí, puede agregar múltiples "ordenar por", simplemente agregue más elementos en esa segunda matriz de parámetros y defina los nombres de campo 'ASC' o 'DESC'. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber

1
¿Qué sucede si AcmeBinBundle: Marks está relacionado ManyToOne con "producto" y queremos ordenar por un campo en el objeto de producto? ¿Es esto posible?
Rodolfo Velasco

2
@RodolVelasco findByse usa para la escena de consulta básica, para una escena más complicada, use query en su lugar. como $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'));
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.