Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine] Zapytania przy relacjach ManyToMany
marekc12
post 9.08.2011, 14:48:32
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 1.08.2008

Ostrzeżenie: (0%)
-----


Witam,

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:
  1. $query = $this->getDoctrine()->getRepository('ProjektPageBundle:Book')->createQueryBuilder('b');
  2. $query = $query->join('b.genres', 'g')->where('g.id = gId')->setParameter('gId', $gatunek);
  3. $query = $query->setFirstResult($offset)->setMaxResults(20)->getQuery();
  4. $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:

  1. {% for book in books %}
  2. <h2>{{ book.title }}, {{ book.titlepl }}</h2>
  3. <p>
  4. Kraj wydania: {{ book.country }}<br />
  5. Gatunki:
  6. {% for genre in book.genres %}
  7. {{ genre.name }}
  8. {% endfor %}
  9. </p>
  10. {% endfor %}


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.

Ten post edytował marekc12 9.08.2011, 14:51:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:32