我试图创建一个查询从一个Doctrine数据库检索对象,按特定的一对多关系的成员数量排序。如何根据关系的数量或成员对Doctrine DQL Query进行排序?
更具体地说:我有两个实体:人员和联邦。一个人可以是一个联合会的成员(人有'联合'关系),联合会可能有个人(联邦为'人'关系)。
我想创建一个DQL查询,它将返回联盟列表,由有多少人是该联盟的成员排序。沿着这些线:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
这将是第一步。还有一个额外的第二步,我不知道是否可以用单个查询来实现,这将在计数之前过滤关系的成员。像这样:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
这第二个将是最佳结果,但第一个满足我的需求,如果第二种情况是不是在单个查询可行性的。
在此先感谢。
感谢您的回答!我不得不对查询做些微的修改,因为我认为如果不选择它,你不能对ORDER BY进行排序。所以最后的查询是这样的: 'SELECT f,COUNT(p)as qtd FROM AcmeStatsBundle:Federation f LEFT JOIN f.people p WHERE p.attr =:some_value GROUP BY f.id ORDER BY qtr' :D –