问题在于:
假设我有3个Eloquent模型:User,Project,Task。
每个用户都有项目,每个项目都有任务。我已经建立了我的雄辩关系,所以我可以打电话给例如:$user->projects
,$project->tasks
等等,但我想做一个嵌套。
我想为用户的项目获取任务。
所以我需要执行以下操作:$user->projects()->tasks()
然后应用where规则($user->projects()->tasks()->whereSomething(1)->get()
),但它当然不起作用。我可以循环所有项目并手动提取任务,但我想有一个简写,我找不到。你能帮忙吗?
答案 0 :(得分:0)
您可以尝试这样的事情
$users = User::with(array('projects.tasks' => function($query)
{
// For example I used "task_name" as a field name in tasks table
$query->where('task_name', 'add_user');
}))->get();
更新:我工作项目中的代码(如果有帮助)
// Model:Role (table:roles)
public function permissions()
{
return $this->belongsToMany('Permission');
}
// Model:Permission (table:permissions)
public function roles()
{
return $this->belongsToMany('Role');
}
有第三个(中间/透视)表permission_role
,这有效:
$u = User::with(array('roles.permissions' => function($query)
{
$query->where('name', 'add_user');
}))->get()->first();
print_r($u->roles[0]->permissions->first()->toArray());
输出:
Array
(
[id] => 1
[name] => add_user
[pivot] => Array
(
[role_id] => 1
[permission_id] => 1
)
)