الاستعلام عن العقيدة مع عدد orderBy

0

لدي كيان "شركة" (مرتبط بـ "حساب") يمكن أن يحتوي على "تذاكر" متعددة.

أريد أن أحصل على الشركات الخمس الأولى التي لديها أكبر عدد من التذاكر

لقد حصلت على هذا حتى الآن ولكنه لا يعمل:

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

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

على ما يبدو ، لا أحب أن أقوم بـ "COUNT" بالترتيب.

1 إجابة

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");
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام