你可以尝试这样的事情
$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
)
)
它的工作原理,但用户的任务是一个受保护的属性。我看到他们在垃圾场,但无法得到他们。如果我对用户执行任务(),它给了我所有的任务,因为我有这样的关系,但它忽略了Where。 – barakuda28
我不确定你的问题,但它应该工作,AFAIK,这是正确的做法,我几乎做到了这一点。 –