Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 链接雄辩的关系函数?_Laravel_Eloquent_Chaining - Fatal编程技术网

Laravel 链接雄辩的关系函数?

Laravel 链接雄辩的关系函数?,laravel,eloquent,chaining,Laravel,Eloquent,Chaining,问题是: 假设我有3个雄辩的模型:用户、项目、任务 每个用户都有项目,每个项目都有任务。我建立了雄辩的关系,因此我可以调用例如:$user->projects,$project->tasks等等,但我想进行嵌套 我想为用户的项目获取任务。 所以我需要做一些类似的事情:$user->projects()->tasks(),然后应用where规则($user->projects()->tasks()->whereSomething(1)->get()),但它当然不起作用。我可以循环所有项目并手动提取

问题是:

假设我有3个雄辩的模型:用户、项目、任务

每个用户都有项目,每个项目都有任务。我建立了雄辩的关系,因此我可以调用例如:
$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
    )
)