如何在教义中使用findBy()对结果进行排序


147

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

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

如何订购结果?

Answers:


307

的第二个参数findBy用于ORDER。

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

7
显然,该理论网站上的API文档与实际的源代码不匹配。github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/…表明您是正确的。
帕特里克·詹姆斯·麦克杜格

我可以设置多重顺序吗?
法比恩·帕佩

9
有点晚才找到这个问题,但是对于任何其他对此感到疑惑的人,可以添加多个“ order by”,只需在第二个参数数组中添加更多元素,然后定义字段名称“ ASC”或“ DESC”即可。IE :array('priority'=>'ASC','id'=>'ASC')
亚伦·贝尔恰彭

1
如果AcmeBinBundle:Marks与ManyToOne与“产品”相关联并且我们想按产品对象中的字段排序怎么办?这可以吗?
Rodolfo Velasco 2015年

2
@RodolVelasco findBy用于基本查询场景,对于更复杂的场景,请使用查询代替。喜欢$qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->...
xdazz15年

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'));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.