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?

Miragem
fonte

Respostas:

307

O segundo parâmetro de findByé para ORDER.

$ens = $em->getRepository('AcmeBinBundle:Marks')
          ->findBy(
             array('type'=> 'C12'), 
             array('id' => 'ASC')
           );
xdazz
fonte
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')
               );
Jethik
fonte
10
$cRepo = $em->getRepository('KaleLocationBundle:Country');

// Leave the first array blank
$countries = $cRepo->findBy(array(), array('name'=>'asc'));
Bhaktaraz
fonte