2015-04-15 14 views
5

Ich benutze Laravels viele zu viele Beziehungen. Ich habe 2 Tabellen projects und groups und Pivot-Tabelle project_groupWählen Sie aus zwei Tabellen Laravel 5

Jetzt kann ich etwas tun:

$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get(); 

Es wird nur Gruppen zurückkehren ... So:

Design 
SEO 

Aber ich müssen wie folgt zurück:

Design(Project2,Project3) 
SEO(Porject1) 

Also muss ich für jede Schleife eine Gruppe und alle Projekte mit dieser Gruppe verknüpfen.

Hier ist meine Beziehung zu Projektmodul:

public function groups(){ 
    return $this ->belongsToMany('App\Group','project_group')->withPivot('admin_id'); 
    } 

Antwort

1

Sie können die Umkehrung der Beziehung in Ihrem Gruppenmodell definieren.

public function projects(){ 
    return $this->belongsToMany('App\Project','project_group')->withPivot('admin_id'); 
} 

Und dann, verwenden Sie es in Ihrer eloquenten Abfrage.

$groups = Group::with('projects')->get(); 

Sie können Ihre Gruppen durchlaufen und in jeder Gruppe alle Projekte erhalten.

foreach($groups as $group) { 
    foreach($group->projects as $project){ 
    //your project 
    } 
} 

ich nicht wirklich verstehen, die Verwendung von Auth::user() -> id aber wenn Sie Projekt wollen, wo der aktuelle Benutzer ist admin Sie eine Bedingung in der mit Funktion verwenden können.

$groups = Group::with(['projects' => function($query) { 
    $query->where('adminid', Auth::user()->id) 
}])->get(); 
+2

'Auth :: Benutzer() -> ID' gibt die ID des aktuell angemeldeten Benutzers zurück. In Laravel 5 gibt es eine Middleware, die überprüft, ob ein Benutzer angemeldet ist, und Sie können auf diesen Datensatz (Felder und Beziehungen) mit 'Auth :: user()' zugreifen. –

Verwandte Themen