У меня есть галерея, и для ее отображения мне нужно получить немного информации, например, количество комментариев, рейтинг, избранные и т. Д. Я делаю что-то вроде ниже, но мне это не кажется полезным.Как это сделать лучше?Может быть, есть какой-нибудь способ сделать это в одном запросе, без подзапросов?
Я мог бы добавить в столбцы изображения таблицы, например, количество комментариев, фаворитов и т. Д., Но если что-то пойдет не так, статистика не будет реальной.Считать его каждый раз надежнее.
$images = $this->getDoctrine()->getEntityManager()
->createQuery('SELECT img
FROM AcmeMainBundle:Image img
WHERE img.category = :category
ORDER BY img.order ASC, img.id DESC')
->setParameter('category', $category)
->getResult();
$comments = $this->getDoctrine()->getEntityManager()
->createQuery('SELECT i.id, COUNT(i.id) as c_count
FROM AcmeMainBundle:ImgComment c
JOIN c.image i
WHERE i.category = :category
GROUP BY c.image')
->setParameter('category', $category)
->getResult();
$ratings = $this->getDoctrine()->getEntityManager()
->createQuery('SELECT i.id, SUM(r.rating) as suma, COUNT(r.rating) as votes
FROM AcmeMainBundle:ImgRating r
JOIN r.image i
WHERE i.category = :category
GROUP BY r.image')
->setParameter('category', $category)
->getResult();