Doctrine řazení nepoužitých otázek v testu

breeta
Člen | 68
+
0
-

Zdravím, mám dotaz v Doctrine pro výběr jedné nepoužité otázky do testu dle historie:

return $this->createQueryBuilder('t')
        ->leftJoin('t.testKind', 'tk')
        ->leftJoin('t.testHistoryQuestions', 'thq')
        ->leftJoin('thq.testHistory', 'th')
        ->andWhere('tk = :testKind')->setParameter('testKind', $testKind)
        ->addSelect("(CASE WHEN th.user = :user THEN 1 ELSE 0 END) AS HIDDEN history")
        ->setParameter('user', $user)
        ->orderBy('history')
        ->setMaxResults(1)
        ->getQuery()
        ->getOneOrNullResult()
    ;

Tento dotaz funguje, dokud se nepoužijí všechny otázky v historii, pak to vrací vždy jen tu první.
Jak k tomu použít ještě řazení dle množství v historii?

David Matějka
Moderator | 6445
+
0
-

jestli to chapu, tak zhruba nasledovne:

  • k leftJoin('thq.testHistory', 'th') pridat podminku th.user = :user
  • pridat group by t.id
  • a order by count(th.id) asc
breeta
Člen | 68
+
0
-

David Matějka napsal(a):

Díky moc, jen tu podmínku th.user = :user jsem tam nedal, jinak mi to nezobrazí otázku bez historie.

Editoval breeta (29. 8. 2018 15:37)