2017-07-03 4 views
1

Ich habe die folgende Liste von Tabellen, die ich will Daten abzufragen vonLaravel DB Abfrage mehrere Tabellen verknüpft und Abrufen von bedingten Daten

users 
id email 
1 [email protected] 
2 [email protected]   

user_projects 
project_id user_id role    
1   1  member 
1   2  owner 

projects 
id name 
1 example project 

ich die resultierenden Daten wie folgt

aussehen wollen
project_id name    email    role owner 
1   example project [email protected] member [email protected] 

Kurz gesagt, ich möchte die Liste der Projekte holen, zu denen der Benutzer gehört, zusammen mit seiner Rolle und dem Besitzer des Projekts.

kam ich mit der folgenden Abfrage auf

return DB::table('user_projects') 
     ->join('projects', 'user_projects.project_id', '=', 'projects.id') 
     ->join('users', 'user_projects.user_id', '=', 'users.id') 
     ->where('user_projects.user_id', '=', $userId) 
     ->select('users.email', 'projects.id', 'users.id as user_id','user_projects.role as userRole', 
      'projects.name') 
     ->get()->toArray(); 

ich in der Lage bin, die Liste der Projekte zu erhalten und die Rolle des Benutzers in dem Projekt aber nicht in der Lage, den E-Mail-Eigentümer des Projektes zu finden.

+0

Würdest du bitte mehr erklären- was meinst du mit E-Mail-Besitzer? –

+0

benutzen Sie bitte select ('users. *') Und zeigen ihre Ausgabe an – hu7sy

Antwort

0

Ich denke, das ist, was Sie brauchen.

select projects.id, projects.name, users.email, up1.email as owner, up2.role role from 
projects, (select * from user_projects, users where role='owner' and users.id=user_projects.user_id) up1, user_projects up2, users 
where 
projects.id=up1.project_id and 
up1.project_id = up2.project_id and 
up2.user_id=users.id and users.id=1 
Verwandte Themen