我遇到了count字段对查询结果进行排序的问题。我的简化查询:
$customers = Doctrine_Core::getTable("Customer")->createQuery("c")
->leftJoin("c.Project p")
->orderBy("COUNT(p.id) ASC");
->execute();
我很确定问题不是与学说有关。从应用程序日志中检索到的ORM生成的查询仅选择一行,并且它包含一行:
ORDER BY COUNT( r2.id ) ASC
删除后正确选择了所有行。
ORDER BY
子句使查询只从customers表中选择一行。我认为这与没有分配任何项目的客户有关。我做错了什么?
答案 0 :(得分:0)
如果您尝试按客户的项目数分组,请尝试使用GROUP BY子句并聚合客户的主键:
$customers = Doctrine_Core::getTable("Customer")->createQuery("c")
->select('c.*, count(p.id) as count')
->leftJoin("c.Project p")
->groupBy('c.id') // or the primary key of Customer
->orderBy("count ASC")
->execute();