具有orderBy计数的学说查询

时间:2018-07-13 14:03:43

标签: sql symfony doctrine

我有一个实体“公司”(链接到“帐户”),该实体可以有多个“票证”。

我想获得票数最高的前五家公司

到目前为止,我已经知道了,但是没有用:

public function getByMostTickets($idAccount) {
    $qb = $this->createQueryBuilder('c')
        ->where("c.account = ".$idAccount)
        ->orderBy("COUNT(c.tickets)", "DESC");

    return $qb->getQuery()->getResult();
}

显然,我不喜欢我在orderBy中执行“ COUNT”操作。

1 个答案:

答案 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");