使用具有相似列名的DB连接laravel中的3个表

使用具有相似列名的DB连接laravel中的3个表,laravel,join,Laravel,Join,我的数据库中有三个3表user\u projects和列 project_id, user_id, role project_id, email, role 项目邀请带列 project_id, user_id, role project_id, email, role 最后是用户 身份证件 电子邮件 我想使用laravel查询生成器连接这三个表,以便 userid, role, email, invited_user null

我的数据库中有三个3表
user\u projects
和列

 project_id,
 user_id,
 role
 project_id,
 email,
 role
项目邀请
带列

 project_id,
 user_id,
 role
 project_id,
 email,
 role
最后是
用户

身份证件
电子邮件

我想使用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();

您需要使用外部联接来获取所有记录,即使该记录没有联接

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();

通过加入
users.id
上的
users
表,无法获得所需的结果,因为在所需的结果中,存在一个空id,其中不存在不会加入该列的用户。