2017-04-06 50 views
0

我有我的數據庫user_projects的列中3個表中laravel加入3個表使用DB類似列名

project_id, 
user_id, 
role 

project_invitations與列

project_id, 
email, 
role 

最後users id, email

我想使用laravel查詢生成器來加入這三個表,以便我可以得到

userid, role, email,   invited_user 
null member [email protected]   true 
1  owner [email protected]  false 
2  member [email protected]  true 

到目前爲止,我得到了以下數據

[ 
    { 
     "email":"[email protected]", 
     "id":2, 
     "role":"owner", 
     "invitedEmail":"[email protected]", 
     "invitedRole":"member" 
    }, 
    { 
     "email":"[email protected]", 
     "id":2, 
     "role":"owner", 
     "invitedEmail":"[email protected]", 
     "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

你不能用在你想要的結果上'users.id'加入'users'表你想要的結果有一個空id其中一個用戶不存在這不會加入該列。 –

回答

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