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

Posted

技术标签:

【中文标题】如何在 Doctrine 中使用 findBy() 对结果进行排序【英文标题】:How to order results with findBy() in Doctrine 【发布时间】:2012-08-16 10:05:13 【问题描述】:

我在 Doctrine 存储库中使用 findBy() 方法:

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

我如何订购结果?

【问题讨论】:

【参考方案1】:
$cRepo = $em->getRepository('KaleLocationBundle:Country');

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

【讨论】:

【参考方案2】:
$ens = $em->getRepository('AcmeBinBundle:Marks')
              ->findBy(
                 array(), 
                 array('id' => 'ASC')
               );

【讨论】:

【参考方案3】:

findBy的第二个参数是ORDER。

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

【讨论】:

教义网站上的 API 文档显然与实际源代码不匹配。 github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… 说明你是对的。 我可以设置多个订单吗? 发现这个问题有点晚了,但对于其他对此感到疑惑的人,是的,您可以添加多个“order by”,只需在第二个参数数组中添加更多元素并定义字段名称“ASC”或“DESC”。即:array('priority'=>'ASC','id'=>'ASC'). 如果 AcmeBinBundle:Marks 与“产品”相关的 ManyToOne 并且我们想按产品对象中的字段排序怎么办?这可能吗? @RodolVelasco findBy 用于基本查询场景,对于更复杂的场景,请改用查询。喜欢$qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->...

以上是关于如何在 Doctrine 中使用 findBy() 对结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章

多对多关系上的 Doctrine2 findBy()

Doctrine2 findBy 关系对象触发字符串转换错误

在findBy之后,Doctrine用急切的读取值重写关系

如何使用 Doctrine 查询 NOT NULL?

基于模型实例获取学说结果

如何在 Selenium 中使用 @FindBy 注释来处理跨度文本?