У меня есть галерея, и для ее отображения мне нужно получить немного информации, например, количество комментариев, рейтинг, favs и т. Д. Я делаю что-то вроде ниже, но для меня это не кажется хорошим. Как это сделать лучше? Может быть, есть ли способ сделать это в одном запросе без подзапросов?Symfony - выберите один из нескольких таблиц
Я мог бы добавить в стол столбцы изображения, такие как количество комментариев, favs и т. Д., Но если что-то пойдет не так, статистика не будет реальной. Подсчет его каждый раз более надежный.
$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();
Благодарим вас за ответ. У меня есть реальности в таких таблицах, как «user_id» и «image_id», и у меня уже есть индексы в этих полях :). У меня есть еще несколько таблиц с подобной информацией, например «favourties» и т. Д. Резюме. Около 12 запросов на страницу, чтобы получить всю эту информацию, включая субсайтовый контент, и это причина моего вопроса, я не уверен, что это не так многие? –