如何在 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() 对结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章