Laravel的多级急切加载?

时间:2016-03-17 19:40:08

标签: php laravel laravel-5 eager-loading

假设我有这些关系

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 eager loading时我们可以拥有多少个嵌套级别? 我已经尝试过这个查询并且它无法正常工作,有人可以建议解决这个问题吗?

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

1 个答案:

答案 0 :(得分:8)

将其更改为

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

它会急切地为您加载所有相关数据。你错过了get()函数。你可以尽可能深地筑巢。