我被困在两个数据透视表中,并且不知道如何执行此操作,因为我必须在Laravel Yajara数据表中显示数据。
首先,让我向您展示我的表结构。
---------------
Table: projects
---------------
Column Type
id int(10)
uid char(36)
project_name varchar(255)
created_by int(10)
updated_by int(10)
created_at timestamp NULL
updated_at timestamp NULL
deleted_at timestamp NULL
--------------------
Table: group_project
--------------------
Column Type
group_id int(10)
project_id int(10)
-------------
Table: groups
-------------
Column Type
id int(10)
uid char(36)
group_name varchar(255)
created_by int(10)
updated_by int(10)
created_at timestamp
updated_at timestamp
deleted_at timestamp
-----------------
Table: group_user
-----------------
Column Type
group_id int(10)
user_id int(10)
-------------
Table: users
-------------
Column Type
id int(10)
uid char(36)
name varchar(255)
first_name varchar(255)
last_name varchar(255)
email varchar(255)
phone varchar(255)
password varchar(255)
remember_token varchar(100)
created_at timestamp
updated_at timestamp
deleted_at timestamp
在上面的表结构中,您会发现,我有两个表(group_user,group_project),它们从项目到组以及从组到用户都是相关的,我想要获得这样的记录。
Project 1
|
-- Group 1
|
-- User 1
-- User 2
-- Group 2
|
-- User 3
-- User 4
Project 2
|
-- Group 1
|
-- User 1
-- User 2
-- Group 3
|
-- User 5
-- User 6
这是我的代码:
# Project Controller
public function index()
{
$projectsObj = $this->project->with(['projectGroups'])->get();
}
# Project Model
public function projectGroups()
{
return $this->belongsToMany('App\Groups', 'group_project', 'project_id', 'group_id');
}
在项目列表中,我想结合数据透视表并进行查询。
答案 0 :(得分:0)
以下内容将返回您想要的结构。
Projects::with('projectGroups', 'projectGroups.users');
如果您完全需要限制查询,请将约束添加到
Project::with([
'projectGroups' => function($query){
$query->where('group_name', 'MyName');
},
'projectGroups.projects' => function ($query) {
$query->where('project_name', 'my_name');
}])->get()
答案 1 :(得分:0)
在项目模型中,将关系更改为
public function projectGroups()
{
return $this->hasMany('App\ProjectGroup', 'project_id', 'id');
}
在GroupProject模型中
public function group()
{
return $this->belongsToOne('App\Group', 'group_id', 'id');
}
在组模型中
public function groupusers()
{
return $this->hasMany('App\GroupUser', 'group_id', 'uid');
}
在GroupUser模型中
public function users()
{
return $this->hasMany('App\User', 'user_id', 'uid');
}