J'ai une commande MySQL et je ne trouve pas l'équivalent en DQL. J'essaie d'aller chercher la liste des messages les plus commentés. Voici la commande MySQL:Joindre et compter 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
est le résultat ici:
id num
1 8
2 9
3 17
4 7
5 6
6 20
7 7
8 10
9 14
10 7
En DQL, il devrait être:
SELECT post, COUNT(comment.id) AS num
FROM Entity\Post post
LEFT JOIN post.comments comment
GROUP BY post.id
Mais cela donne:
id num
1 50
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
Je ne comprends pas d'où vient le 50 et pourquoi il y a une différence entre les 2 résultats. Pourriez-vous me dire comment faire fonctionner cette jointure dans Doctrine?
Quelle est la requête exacte générée par la doctrine? Vous pouvez facilement le vérifier en utilisant le WDT de Symfony. De plus, vous devez stocker le nombre total de commentaires dans la table 'Post' et le/décrémenter à chaque fois que vous ajoutez/supprimez un commentaire. – Crozin
Salut Crozin, c'est ce que je suis en train de faire. Mais je veux faire ce travail parce que je veux ajouter une déclaration comme "WHERE post.date>?" Pour obtenir les messages "les plus chauds" pour les dernières 24h, le dernier jour, le mois dernier ...J'exécute ces commandes avec 'doc/console doctrine: query: dql' et' app/console doctrine: query: sql'. – Quentin