Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Doctrine i join
Forum PHP.pl > Forum > PHP > Object-oriented programming
Fluke
Witam,

Mam problem dotyczący ładowania innych obiektów powiązanych ze sobą. Czy w doctrine jest taka możliwość, żeby przypisywał od razu do obiektu powiązane obiekty ?
Sytuacja jest taka, że gdy chcę wybrać 30 rekordów i potrzebuję mieć dane z relacji to wykonuje się SELECT główny a po drodze wykonuje kolejne SELECT`y do tabel powiązanych relacją.

Temat do zamknięcia...
Głowiłem się pół dnia a po napisaniu tematu nagle mnie olśniło...
Rozwiązanie jest proste,
do queryBuildera w select wpisać aliasy tabel które nas interesują...

Podam przykład

  1. $quer = $this->getDoctrine()
  2. ->getRepository('Product')
  3. ->createQueryBuilder('p')
  4. ->select('p, c') //tutaj trzeba dodać jeszcze c aby od razu przypisywał obiekty. Bez tego aliasu, dostęp do obiektu category będzie wykonane LAZY LOAD
  5. ->join('p.category', 'c');
cadavre
Pierwszy akapit odpowiada na Twoje pytanie:
http://www.doctrine-project.org/blog/doctr...zy-loading.html

Poza tym można wybrać inny fetch mode aniżeli Lazy Loading:
http://docs.doctrine-project.org/en/2.1/re...tch-mode-in-dql

Eager Loading robi to o co pytasz. : )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.