Я провел несколько тестов и обнаружил, что все в порядке.
Video: id, title, ...
Comment: id, video_id, content, ...
Схема базы данных очень проста, и я думаю, что никаких объяснений не требуется.
#DQL:
SELECT v.id, COUNT(c.id) AS num
FROM Video v
JOIN v.comments c
GROUP BY v.id
ORDER BY num DESC
#Generated SQL:
SELECT v0_.id AS id0, COUNT(v1_.id) AS sclr1
FROM video v0_
INNER JOIN video_comment v1_ ON v0_.id = v1_.video_id
GROUP BY v0_.id
ORDER BY sclr1 DESC
#Result set:
Array
(
[0] => Array
(
[id] => 148
[num] => 3
)
[1] => Array
(
[id] => 96
[num] => 2
)
[2] => Array
(
[id] => 111
[num] => 1
)
[3] => Array
(
[id] => 139
[num] => 1
)
)
Если вы выберете весь объект Video
вместо его идентификатора (v
вместо v.id
в предложении SELECT
), запрос также будет выполнен.Конечно, вместо элемента id
будет объект Video
под элементом 0 th .
Проверено на Doctrine 2.1.0-DEV