Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

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
Php 通过对Laravel中的多对多关系进行多通来检索远程关系_Php_Laravel_Eloquent_Laravel 5.2 - Fatal编程技术网

Php 通过对Laravel中的多对多关系进行多通来检索远程关系

Php 通过对Laravel中的多对多关系进行多通来检索远程关系,php,laravel,eloquent,laravel-5.2,Php,Laravel,Eloquent,Laravel 5.2,我的应用程序中有以下型号 使用者 组 任务 哪些有以下关系 用户和组具有多对多关系 任务和组具有多对多关系 因此,基本上一个用户可以属于多个组,每个组可以有多个任务 以下是表格结构 使用者 身份证件 名称 团体 身份证件 名称 任务 身份证件 名称 组用户 身份证件 group_id带groups表的外键 用户id外键与用户表 小组任务 身份证件 group_id带groups表的外键 任务id外键与任务表 现在我想检索用户的所有任务 我尝试了以下方法,但都不起作用 方法1 $user->gro

我的应用程序中有以下型号

使用者 组 任务 哪些有以下关系

用户和组具有多对多关系 任务和组具有多对多关系 因此,基本上一个用户可以属于多个组,每个组可以有多个任务

以下是表格结构

使用者

身份证件 名称 团体

身份证件 名称 任务

身份证件 名称 组用户

身份证件 group_id带groups表的外键 用户id外键与用户表 小组任务

身份证件 group_id带groups表的外键 任务id外键与任务表 现在我想检索用户的所有任务

我尝试了以下方法,但都不起作用

方法1

$user->groups为用户提供组列表 $group->tasks提供组的任务列表 所以我试过了

$user->groups->tasks,但它不起作用

方法2

我尝试将其添加到我的用户模型中

public function tasks()
{
    return $this->hasManyThrough(Task::class, Group::class);
}
但即使这样也不行。下面是我得到的错误

QueryException in Connection.php line 713:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'groups.user_id' in 'field list' (SQL: select `tasks`.*, `groups`.`user_id` from `tasks` inner join `groups` on `groups`.`id` = `tasks`.`group_id` where `groups`.`user_id` = 1)
我猜这是因为它期待一对多的关系,但我有一个多对多的关系

那么,有没有一种方法可以在不获取所有组的情况下检索它,然后在它们之间循环

User Model

public function groups()
{
    return $this->belongsToMany('App\Group');
}

Group Model

public function tasks()
{
    return $this->belongsToMany('App\Task');
}

Task Model

public function groups()
{
    return $this->belongsToMany('App\Group');
}
正在检索用户的所有任务

$user = User::find(1);

$user->load('groups.tasks');

$tasks = $user->groups->pluck('tasks')->collapse();
正在检索用户的所有任务

$user = User::find(1);

$user->load('groups.tasks');

$tasks = $user->groups->pluck('tasks')->collapse();

您还可以在此处查看HasManyThrough的扩展:

它可以帮助您检索关系的许多子级别。 在你的情况下,应该是 用户->归属组->blongsToMany任务 只需将您的方法添加到用户模型中,如下所示:

public function tasks()
    {
        return $this->hasManyDeep(
            'App\Task',['App\Group']
        );
    }

您还可以在此处查看HasManyThrough的扩展:

它可以帮助您检索关系的许多子级别。 在你的情况下,应该是 用户->归属组->blongsToMany任务 只需将您的方法添加到用户模型中,如下所示:

public function tasks()
    {
        return $this->hasManyDeep(
            'App\Task',['App\Group']
        );
    }

您可以使用'groups.tasks'@z3r0ck尝试此用户::抱歉,不确定我是否理解您的建议。你能再解释一下吗?我有一个需要检索任务的用户对象。好的,在这种情况下,你可以这样做$User->load'groups.tasks'@z3r0ck只会给我一个用户模型的实例。如何从it访问任务?我刚检查过,它没有任何任务属性。这一个很棘手。。。您不能直接使用has MULTY THORT,因为您有两个透视表。。。我想你可以用集合和所有东西来做,但如果你有大数据集,那就不是很有效了。尝试查找Laravel在web上有许多透视表。您可以尝试此用户::with'groups.tasks'@z3r0ck抱歉,不确定我是否理解您的建议。你能再解释一下吗?我有一个需要检索任务的用户对象。好的,在这种情况下,你可以这样做$User->load'groups.tasks'@z3r0ck只会给我一个用户模型的实例。如何从it访问任务?我刚检查过,它没有任何任务属性。这一个很棘手。。。您不能直接使用has MULTY THORT,因为您有两个透视表。。。我想你可以用集合和所有东西来做,但如果你有大数据集,那就不是很有效了。尝试寻找Laravel在web上有许多透视表。您是否也可以发布您最终访问任务的方式?您是否正在使用$user->groups->tasks?您是否也可以发布如何访问任务?您是否正在使用$user->group->tasks?