2016-03-17 4 views
6

Скажет, у меня есть эти отношенияМногократная загрузочная загрузка в 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'); 
    } 
} 

Мой вопроса здесь, сколько вложенных уровней мы можем иметь при использовании Laravel жадной загрузки? Я пробовал этот запрос, и он не работает, может кто-нибудь предложить работу для этого?

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

Вы можете вложить столько уровней, сколько хотите. Определите «не работает», так как это должно работать нормально. Единственное, что я вижу, это то, что вы не вызывали '-> get()' в конце. – patricus

+0

Нет предела, но вы можете оптимизировать это, выполнив 'Приглашение :: с (['invitePeople.apartments.city'])'. – user3158900

+0

@ user3158900 Приглашение :: с ('invitePeople.apartments.city']) будет делать три объединения, включая приглашенных людей, квартиры и город? – ggderas

ответ

7

Изменить его

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

Это все соответствующие данные нетерпеливых нагрузок для вас. Вы пропустили функцию get(). Вы можете гнездиться настолько глубоко, насколько это возможно.

Смежные вопросы