2012-05-08 15 views
5

Tengo una consulta DQL le gusta esto:Solicitar un DQL Ingreso por recuento en assiociation

$dql = "SELECT p, count(u.id) as ucnt FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY ucnt"; 
$query = $this->_em->createQuery($dql); 

pregunta es, ¿cómo puedo aferrarse a la clasificación por la cuenta, pero no los recibe en el resultado? Quiero obtener solo proyectos ordenados por conteo, no como conjunto con [proyecto] y [ucnt].

Respuesta

5

A partir de Doctrina 2.2 (source):

SELECT a, COUNT(b.id) AS HIDDEN c [...] ORDER BY c 
+0

Lo intentaré, ya que por ahora mi solución era agregar un contador a la entidad y luego ordenarla, pero HIDDEN se ve mucho más agradable :-) –

+0

¡Gracias, amigo! Realmente me ayudaste –

-1

Probar:

$dql = "SELECT p FROM IAA\Entity\Project p " . 
     "JOIN p.likedByUsers u ORDER BY count(u.id)"; 
$query = $this->_em->createQuery($dql); 
+0

Sí, lo he intentado, da un error: Mensaje: [Error de sintaxis] la línea 0, col 72: Error : Final esperado de la cadena, get '(' –

+0

Pero en este caso puede seleccionar 2 valores y luego ignorar el valor de conteo en el código PHP. –

+0

No puedo, porque devuelve un error de sintaxis. Sé que puedo reordenar la matriz en PHP, pero esto no parece una solución elegante, debe haber forma de obtener solo proe jct sin que el recuento siga teniendo ordenados por él. –

Cuestiones relacionadas