私はギャラリーがあり、それを表示する必要がありますコメント、評価、favsの数のようないくつかの情報を取得する必要があります。私は以下のようなことをしますが、 より良い方法でそれを行うには?たぶんサブクエリなしで、1つのクエリでそれを行う方法はありますか?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のクエリが要約されています。それは私の質問の原因です。たくさんの? –