バックグラウンド
私はポートフォリオのウェブサイトに取り組んでいます。ウェブサイトはかなりシンプルで、作品の大部分はギャラリーにあります。さまざまな方法でギャラリーを取得およびフィルタリングするためにすべてリンクされた一連のデータベーステーブルがあります。上から順に、次のとおりです。
GalleryCategory
-> Gallery
->GalleryImage
問題
私が直面している問題は、特定のカテゴリのすべてのギャラリーを表示しているギャラリー カテゴリ ページでのみ発生し、その後、ギャラリー内のギャラリー イメージが返されます。
私のコントローラーは現在次のようになっています。
public function galleryCategoryAction($categoryId)
{
$em = $this->getDoctrine()->getManager();
$category = $em->getRepository('SeerUKDWrightGalleryBundle:GalleryCategory')->findById($categoryId);
$galleries = $category->getGalleries();
$galleryImages = [ ];
foreach ($galleries as $i => $gallery)
{
$galleryImages[$gallery->getId()] = $em->getRepository('SeerUKDWrightGalleryBundle:GalleryImage')
->findOneByGalleryId($gallery->getId());
}
return $this->render('SeerUKDWrightGalleryBundle:Gallery:category.html.twig', array(
'category' => $category,
'galleries' => $galleries,
'galleryImages' => $galleryImages
));
}
今、これが機能している限り、まさに私が望んでいるように、私はそれがちょうど...間違っているように感じます! カテゴリ内のギャラリーを取得することは、素晴らしくクリーンです。
$category = $em->getRepository('SeerUKDWrightGalleryBundle:GalleryCategory')->findById($categoryId);
$galleries = $category->getGalleries();
しかし、各ギャラリーの最初の画像を取得する唯一の方法は、それらをループして各エンティティを取得することです。私が言ったように、これは間違っているようです。
これを改善するための他の唯一の提案は、ギャラリー エンティティのエンティティ マネージャを使用してエンティティ内の画像を取得することです。
結論
結論として、どうすればこれをより良く行うことができますか?これをもっとうまくやる場所があるに違いありません。私は Symfony の初心者です。ドキュメントを調べても役に立ちませんでした...
追加の詳細
言及するのを忘れていましたが、エンティティを引き続き使用できることが必要です。後で使用されるエンティティに対していくつかのメソッドがあります。たとえば、GalleryImage エンティティには、画像のシステム パスと Web パスを取得するメソッドがあります。私はまだそれらを使用できるようにする必要があります。