Laravel 链接雄辩的关系函数?
问题是: 假设我有3个雄辩的模型:用户、项目、任务 每个用户都有项目,每个项目都有任务。我建立了雄辩的关系,因此我可以调用例如:Laravel 链接雄辩的关系函数?,laravel,eloquent,chaining,Laravel,Eloquent,Chaining,问题是: 假设我有3个雄辩的模型:用户、项目、任务 每个用户都有项目,每个项目都有任务。我建立了雄辩的关系,因此我可以调用例如:$user->projects,$project->tasks等等,但我想进行嵌套 我想为用户的项目获取任务。 所以我需要做一些类似的事情:$user->projects()->tasks(),然后应用where规则($user->projects()->tasks()->whereSomething(1)->get()),但它当然不起作用。我可以循环所有项目并手动提取
$user->projects
,$project->tasks
等等,但我想进行嵌套
我想为用户的项目获取任务。
所以我需要做一些类似的事情:
$user->projects()->tasks()
,然后应用where规则($user->projects()->tasks()->whereSomething(1)->get()
),但它当然不起作用。我可以循环所有项目并手动提取任务,但我想有一个速记,我找不到。你能帮忙吗?你可以试试这样的东西
$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();
更新:我工作项目中的代码(如果有帮助)
还有第三个(中间/透视)表权限\u角色
,它可以工作:
$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
)
)
它可以工作,但用户的任务是受保护的属性。我在垃圾堆里看到它们,但找不到。如果我对用户执行tasks(),它会给我他所有的任务,因为我有这样的关系,但它忽略了Where。我不确定你的问题,但它应该会起作用,好吧,这是正确的方法,我实际上做到了。
Array
(
[id] => 1
[name] => add_user
[pivot] => Array
(
[role_id] => 1
[permission_id] => 1
)
)