join - joining 3 tables in laravel using DB with similar column names -


i have 3 three tables in database user_projectswith columns

 project_id,  user_id,  role 

project_invitations columns

 project_id,  email,  role 

and users id, email

i want join 3 tables using laravel query builder can

userid,  role,  email,          invited_user  null    member  test@gmail.com          true 1       owner   test123@gmail.com       false 2       member  test12@gmail.com        true  

so far got following data

[     {         "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"     } ] 

using following query

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 invitedemail','project_invitations.role invitedrole')             ->get(); 

you need use outer joins records if there not join record.

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 invitedemail','project_invitations.role invitedrole')             ->get(); 

Comments