我的数据库user_projects
中有三个包含列
project_id,
user_id,
role
project_invitations
列
project_id,
email,
role
最后users
id,
email
我想使用laravel查询构建器加入这三个表,以便我可以
userid, role, email, invited_user
null member test@gmail.com true
1 owner test123@gmail.com false
2 member test12@gmail.com true
到目前为止,我得到了以下数据
[
{
"email":"test@sharklasers.com",
"id":2,
"role":"owner",
"invitedEmail":"test@gmail.com",
"invitedRole":"member"
},
{
"email":"test@sharklasers.com",
"id":2,
"role":"owner",
"invitedEmail":"safda@gmail.com",
"invitedRole":"member"
}
]
使用以下查询
DB::table('user_projects')
->join('users', 'user_projects.user_id', '=', 'users.id')
->join('project_invitations', 'project_invitations.project_id','=','user_projects.project_id')
->where('user_projects.project_id', '=', $projectId)
->select('users.email', 'users.id', 'user_projects.role', 'project_invitations.email as invitedEmail','project_invitations.role as invitedRole')
->get();
答案 0 :(得分:0)
即使没有记录的连接,您也需要使用外连接来获取所有记录。
DB::table('user_projects')
->join('users', 'user_projects.user_id', '=', 'users.id', 'outer')
->join('project_invitations', 'project_invitations.project_id','=','user_projects.project_id', 'outer')
->where('user_projects.project_id', '=', $projectId)
->select('users.email', 'users.id', 'user_projects.role', 'project_invitations.email as invitedEmail','project_invitations.role as invitedRole')
->get();