说我有3张桌子
Users
- id
- name
Phones
- id
- number
- user_id
Carriers
- id
- name
- phone_id
在Models
中,我设置了所有必要的hasMany
和belongsTo
关系。
我可以使用user
选择phones
:
App\User::with('phones')->where('id', '=', 1)->first();
和phone
与carrier
:
App\Phone::with('carrier')->where('id', '=', 1)->first();
是否可以使用模型phone
获取同时包含carrier
和App\User
的集合?
答案 0 :(得分:1)
您可以使用Nested eager loading:
$users = App\User::with('phones.carriers')->get();
或者,
在用户模型中设置Has Many Through关系:
public function carriers()
{
return $this->hasManyThrough('App\Phone', 'App\Carrier');
}
这样你就可以获得运营商和手机:
$user->carriers;
$user->phones;