我有一個MySQL命令,我無法在DQL中找到等價物。我正在嘗試獲取評論最多的帖子。下面是MySQL命令:加入並在DQL中計數
SELECT posts.id, COUNT(comments.id) AS num
FROM posts
LEFT JOIN comments ON (posts.id = comments.post_id)
GROUP BY posts.id
下面是結果:
id num
1 8
2 9
3 17
4 7
5 6
6 20
7 7
8 10
9 14
10 7
在DQL,它應該是:
SELECT post, COUNT(comment.id) AS num
FROM Entity\Post post
LEFT JOIN post.comments comment
GROUP BY post.id
但是這給:
id num
1 50
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
我不明白50來自哪裏爲什麼2個結果之間存在差異。你能告訴我如何使這種聯合工作在教義中?
什麼是由學說產生準確的查詢?您可以使用Symfony的WDT輕鬆檢查它。你也應該在'Post'表中存儲所有評論數量,並且每當你添加/刪除一個評論時就將其存入/減少。 – Crozin 2011-06-13 23:36:52
嗨Crozin,這是我在做什麼。但我想做這個工作,因爲我想添加一個像'WHERE post.date>?'語句來獲取最後24小時,最後一天,上個月的「hotest」帖子......我用'app/console doctrine:query:dql'和'app/console doctrine:query:sql'運行這些命令。 – Quentin 2011-06-14 01:07:38