Sud*_*dar 1 php laravel eloquent laravel-5.2
我的应用程序中有以下模型
具有以下关系
因此,基本上,一个用户可以属于多个组,每个组可以具有多个任务。
以下是表结构。
使用者
团体
任务
group_user
group_tasks
现在,我想为用户检索所有任务。
我尝试了以下方法,但两种方法均无效。
方法1
$user->groups() 提供用户的组列表$group->tasks() 给出一个小组的任务清单所以我尝试了
$user->groups()->tasks() 但这没用。
方法2
public function tasks()
{
return $this->hasManyThrough(Task::class, Group::class);
}
Run Code Online (Sandbox Code Playgroud)
但即使那样也没有用。以下是我得到的错误
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)
Run Code Online (Sandbox Code Playgroud)
我的猜测是,这种情况正在发生,因为它期望一对多的关系,但是我却有一对多的关系。
那么有没有一种方法可以在不获取所有组然后遍历它们的情况下进行检索?
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');
}
Run Code Online (Sandbox Code Playgroud)
检索用户的所有任务。
$user = User::find(1);
$user->load('groups.tasks');
$tasks = $user->groups->pluck('tasks')->collapse();
Run Code Online (Sandbox Code Playgroud)