Sto provando a creare una query per il recupero di oggetti da un database Doctrine, ordinati per il numero di membri di una specifica relazione uno-a-molti.Come ordinare una query DQL Doctrine in base al numero o ai membri di una relazione?
In particolare: Ho due entità: Persona e Federazione. Una persona può essere membro di una federazione (la persona ha una relazione di "federazione") e una federazione può avere n persone (Federazione come relazione "persone").
Vorrei creare una query DQL che restituisca l'elenco di federazioni, ordinato da quante persone sono membri di tale federazione. Qualcosa in questo senso:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
Questo sarebbe il primo passo. C'è un ulteriore secondo passo, che non so se è possibile ottenere con una singola query, che sarebbe filtrare i membri della relazione prima del conteggio. In questo modo:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
Tale seconda sarebbe il risultato ottimale, ma il primo soddisfa le esigenze, se il secondo caso non tenerne in una singola query.
Grazie in anticipo.
Grazie per la risposta! Ho dovuto apportare lievi modifiche alla Query, in quanto penso che tu non possa ORDINARE da un aggregato senza SELEZIONARLO. Quindi la query finale è questa: 'SELECT f, COUNT (p) come qtd FROM AcmeStatsBundle: Federation f LEFT JOIN f.people p WHERE p.attr =: some_value GROUP BY f.id ORDER BY qtr' : D –