Tengo un comando MySQL y no puedo encontrar el equivalente en DQL. Estoy intentando buscar la lista de las publicaciones más comentadas. Este es el comando MySQL:Unirse y contar en DQL
SELECT posts.id, COUNT(comments.id) AS num
FROM posts
LEFT JOIN comments ON (posts.id = comments.post_id)
GROUP BY posts.id
Aquí está el resultado:
id num
1 8
2 9
3 17
4 7
5 6
6 20
7 7
8 10
9 14
10 7
En DQL, debería ser:
SELECT post, COUNT(comment.id) AS num
FROM Entity\Post post
LEFT JOIN post.comments comment
GROUP BY post.id
Pero esto da:
id num
1 50
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
No entiendo de dónde viene el 50 y por qué hay una diferencia entre los 2 resultados. ¿Podría decirme cómo hacer que esta unión funcione en Doctrine?
¿Cuál es la consulta exacta generada por la doctrina? Puedes verificarlo fácilmente usando el WDT de Symfony. También debe almacenar el número total de comentarios en la tabla 'Publicación' y en/disminuir cada vez que agrega/elimina un comentario. – Crozin
Hola Crozin, es lo que estoy haciendo en realidad. Pero quiero hacer que esto funcione porque quiero agregar una afirmación como 'WHERE post.date>?' Para obtener las publicaciones 'más interesantes' de las últimas 24h, último día, último mes ...Estoy ejecutando estos comandos con 'app/console doctrine: query: dql' y' app/console doctrine: query: sql'. – Quentin