pytanie dotyczy Symfony 2.
Wiele książek (tabela book) może być przypisanych do wielu gatunków (tabela genre). Wykorzystałem relację Many-To-Many, Bidirectional.
Wyciągam 20 książek, takich które należą do konkretnego gatunku (po prostu chcę wyświetlić np. tylko książki fantasty), zapytaniem:
$query = $this->getDoctrine()->getRepository('ProjektPageBundle:Book')->createQueryBuilder('b'); $query = $query->join('b.genres', 'g')->where('g.id = gId')->setParameter('gId', $gatunek); $query = $query->setFirstResult($offset)->setMaxResults(20)->getQuery(); $books = $query->getResult();
wysyłam zmienną $books zawierającą 20 książek do templatki, a w niej wyświetlam je. Przy każdej książce wyświetlam informacje o niej z tabeli book oraz nazwy gatunków do jakich należy dana książka (może być ich kilka). Oto kawałek tamplatki:
Niby wszystko działa, ale martwi mnie to, że w momencie wyświetlania listy gatunków do których każda książka należy wykonuje się zapytanie do bazy i gdy wyświetlam te 20 książek to dochodzi 20 zapytań. Co oznacza, że pewnie niezbyt dobrze to robię. Jak to powinienem zrobić?
Mam nadzieję, że post jest zrozumiały.