如何在Doctrine中使用findBy()方法按顺序排序结果

167

我正在使用Doctrine存储库上的findBy()方法:

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

我该如何对结果进行排序?

3个回答

351
< p > < code > findBy 的第二个参数用于排序。
$ens = $em->getRepository('AcmeBinBundle:Marks')
          ->findBy(
             array('type'=> 'C12'), 
             array('id' => 'ASC')
           );

7
显然,Doctrine网站上的API文档与实际源代码不符。 https://github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/EntityRepository.php 显示您是正确的。 - Patrick James McDougle
我可以设置多个排序吗? - Fabien Papet
9
如果有人想知道,可以在第二个参数数组中添加更多元素并定义字段名称为“ASC”或“DESC”,从而可以添加多个“order by”。例如:array('priority'=>'ASC','id'=>'ASC') - Aaron Belchamber
1
如果AcmeBinBundle:Marks与“product”相关联,并且我们想按照产品对象中的字段排序,那么这是可能的吗? - Rodolfo Velasco
2
@RodolVelasco findBy 用于基本查询场景,对于更复杂的场景,请使用 query。例如 $qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->... - xdazz
这对于findOneBy也有效吗? - cwhisperer

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接