Estoy tratando de crear una consulta para recuperar objetos de una base de datos de Doctrine, ordenados por el número de miembros de una relación específica de uno a varios.¿Cómo ordenar una consulta Doctrine DQL por el número o los miembros de una relación?
Más específicamente: Tengo dos entidades: Persona y Federación. Una persona puede ser miembro de una federación (la persona tiene una relación de 'federación') y una federación puede tener n personas (Federación como 'relación de personas').
Me gustaría crear una consulta DQL que devuelva la lista de Federaciones, ordenada por cuántas personas son miembros de esa Federación. Algo en esta línea:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of members of f.people]
Ese sería el primer paso. Hay un segundo paso adicional, que no sé si es posible lograr con una sola consulta, que sería filtrar los miembros de la relación antes del recuento. De este modo:
SELECT f FROM AcmeStatsBundle:Federation f ORDER BY [number of (f.people p where p.attr = value)]
Ese segundo sería el resultado óptimo, pero el primero de ellos satisface mis necesidades, si el segundo caso no es factible en una sola consulta.
Gracias de antemano.
Gracias por la respuesta! Tuve que hacer ligeras modificaciones a la consulta, ya que creo que no se puede ORDENAR por un agregado sin SELECCIONARLO. Así que la consulta final es la siguiente: 'SELECCIONE f, COUNT (p) como qtd DE AcmeStatsBundle: Federación f UNIÓN IZQUIERDA f.personas p DONDE p.attr =: some_value GROUP BY f.id ORDEN POR qtr' : D –