Próbuję utworzyć zapytanie do pobierania obiektów z bazy danych Doctrine, posortowane według liczby członków konkretnej relacji jeden do wielu.Jak sortować zapytanie DQL Doctrine według liczby lub członków relacji?
Dokładniej: mam dwie jednostki: osobę i federację. Osoba może być członkiem jednej federacji (Osoba ma relację "federacja"), a federacja może mieć osoby (Federacja jako relacja "ludzie").
Chciałbym utworzyć kwerendę DQL, która zwróci listę federacji, uporządkowaną według liczby osób będących członkami tej federacji. Coś wzdłuż tych linii:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
To byłby pierwszy krok. Jest dodatkowy, drugi krok, którego nie wiem, czy można to osiągnąć za pomocą pojedynczego zapytania, które filtrowałoby członków relacji przed liczeniem. Tak:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
To drugi byłby optymalny wynik, ale pierwszy z nich zaspokaja moje potrzeby, jeśli drugi przypadek nie jest na rzeczywiste w jednym zapytaniu.
Z góry dziękuję.
Dzięki za odpowiedź! Musiałem wprowadzić drobne zmiany w Kwerendie, ponieważ uważam, że nie można ZAMÓWić przez agregat bez WYBORU. Tak więc ostatnie zapytanie jest następujące: 'SELECT f, COUNT (p) jak qtd Z AcmeStatsBundle: Federacja f LEFT JOIN f. Ludzie p WHERE p.attr =: some_value GROUP BY f.id ORDER BY qtr' : D –