Como solicitar resultados com findBy () no Doctrine


147

Estou usando o findBy()método em um repositório do Doctrine:

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

Como posso solicitar os resultados?

Respostas:


307

O segundo parâmetro de findByé para ORDER.

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

7
Aparentemente, a documentação da API no site da doutrina não corresponde ao código fonte real. github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… mostra que você está correto.
Patrick James McDougle

Posso definir a ordem múltipla por?
Fabien Papet

9
Um pouco tarde para encontrar essa pergunta, mas para qualquer pessoa que esteja se perguntando sobre isso, sim, você pode adicionar vários "pedidos por", basta adicionar mais elementos nessa segunda matriz de parâmetros e definir os nomes de campo 'ASC' ou 'DESC'. IE: array('priority'=>'ASC','id'=>'ASC').
Aaron Belchamber 25/03

1
E se o AcmeBinBundle: Marks estiver relacionado ao ManyToOne com "produto" e desejarmos solicitar por um campo no objeto do produto? Isso é possível?
Rodolfo Velasco

2
O @RodolVelasco findByé usado para a cena de consulta básica; para uma cena mais complicada, use a consulta. gosto $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'));
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.