2016-03-17 17 views
6

powiedzmy mam te relacjeWielopoziomowe ładowanie w Laravel?

class Invitation 
{ 
    public function invitedPeople() 
    { 
     return $this->belongsTo('App\Person', 'personID'); 
    } 
} 

class Person 
{ 
    public function apartments() 
    { 
     return $this->belongsToMany('App\Apartment', 'apartment_person', 'personID', 'apartmentID');   
    } 
} 

class Apartment 
{ 
    public function city() 
    { 
     return $this->belongsTo('App\City', 'cityID'); 
    } 
} 

Moje pytanie brzmi, jak wiele zagnieżdżonych poziomów możemy mieć podczas korzystania laravel chętny załadunku? Próbowałem tego zapytania i nie działa, czy ktoś może zaproponować obejście tego problemu?

return Invitation::with(['invitedPeople', 'invitedPeople.apartments', 'invitedPeople.apartments.city']) 
+0

Można zagnieździć dowolną liczbę poziomów. Zdefiniuj "nie działa", ponieważ powinno to działać dobrze. Jedyne, co widzę, to to, że na końcu nie wywołałeś '-> get()'. – patricus

+0

Nie ma limitu, ale możesz to zoptymalizować, wykonując 'Invitation :: with (['invitePeople.apartments.city'])'. – user3158900

+0

@ user3158900 Zaproszenie :: with ("invitePeople.apartments.city"]) zrobiłoby trzy połączenia, w tym zaproszone People, apartments i city? – ggderas

Odpowiedz

7

go zmienić na

return Invitation::with('invitedPeople.apartments.city')->get() 

Będzie wszystkie odnośne dane chętny obciążenia dla Ciebie. Tęskniłeś za funkcją get(). Możesz zagnieździć się tak głęboko, jak to tylko możliwe.

Powiązane problemy