我有一个实体“公司”(链接到“帐户”),该实体可以有多个“票证”。
我想获得票数最高的前五家公司
到目前为止,我已经知道了,但是没有用:
public function getByMostTickets($idAccount) {
$qb = $this->createQueryBuilder('c')
->where("c.account = ".$idAccount)
->orderBy("COUNT(c.tickets)", "DESC");
return $qb->getQuery()->getResult();
}
显然,我不喜欢我在orderBy中执行“ COUNT”操作。
答案 0 :(得分:2)
您可以尝试这样的方法吗?
$qb = $this->createQueryBuilder('c')
->join("c.tickets", "t")
->where("c.account = :account_id")
->setParameter("account_id", $idAccount)
->groupBy("c.id")
->orderBy("COUNT(t.id)", "DESC");
[编辑]
抱歉,这应该起作用...但是转储结果以查看返回的结果...
$qb = $this->createQueryBuilder('c')
->select("c", "COUNT(t.id) as countTickets")
->join("c.tickets", "t")
->where("c.account = :account_id")
->setParameter("account_id", $idAccount)
->groupBy("c.id")
->orderBy("countTickets", "DESC");