如何在Doctrine中使用findBy()来订购结果

Ran*_*ngh 137 php doctrine-orm

findBy()在Doctrine存储库上使用该方法:

$entities = $repository->findBy(array('type'=> 'C12'));
Run Code Online (Sandbox Code Playgroud)

我该如何订购结果?

xda*_*azz 292

第二个参数findBy是ORDER.

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

  • 显然,doctrine网站上的API文档与实际的源代码不符.https://github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/EntityRepository.php表明你是对的. (7认同)
  • 有点迟到发现这个问题,但对于其他任何想知道这个问题的人,是的,你可以添加多个"order by",只需在第二个参数数组中添加更多元素,并定义字段名称"ASC"或"DESC".IE:`array('priority'=>'ASC','id'=>'ASC')`. (5认同)
  • @RodolVelasco`findBy`用于基本查询场景,对于更复杂的场景,请改用查询.比如`$ qb = $ em-> getRepository('AcmeBinBundle:Marks') - > createQueryBuilder('m') - > ...`. (2认同)

Jet*_*hik 24

$ens = $em->getRepository('AcmeBinBundle:Marks')
              ->findBy(
                 array(), 
                 array('id' => 'ASC')
               );
Run Code Online (Sandbox Code Playgroud)


Bha*_*raz 10

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

// Leave the first array blank
$countries = $cRepo->findBy(array(), array('name'=>'asc'));
Run Code Online (Sandbox Code Playgroud)