SELECT
`post`.*,
(SELECT count(*) FROM `comment` WHERE `comment`.`topic_id` = `post`.`id`) as `count_comments`,
`user`.`username`
FROM
`post`
LEFT JOIN
`user`
ON
`user`.`id` = `post`.`user_id`
LIMIT 0, 100
Т.е. мы выбираем посты, джойним для каждого имя автора и подсчитываем кол-во комментариев
Давно не использую фреймворки но я так понимаю должно быть как то так:
$posts = $repository->find();
foreach (.....) {
$post->getComments()->count();
}
Те тут получается что будут получены все комменты для каждого поста. В Symfony я знаю можно переопределить класс репозитория, но тогда в лучшем случае получится то что я написал на SQL. Возможно ли в каком либо из фреймворков сделать это проще? И стоит ли? Возможно в постах стоит завести отдельное поле с кол-вом комментариев?