2016-06-01 6 views
0

Ich arbeite an einer API, aber es beginnt, ein bisschen langsam zu werden, jetzt, da die Daten zunehmen. Ich verschiebe einige der Abfragen, sodass sie den DB-Abfrage-Generator verwenden.Laravel - Verwenden einer verschachtelten Beziehung mit dem Abfrage-Generator

Ich habe meine letzte, die eine verschachtelte Abfrage hat:

$artists = \DB::table('artists') 
    ->leftJoin('performances', 'artists.id', '=', 'performances.artist_id') 
    ->get(); 

Aber jetzt brauchen die zweite Beziehung zu tun, die im Performance-Modell ist:

$artists = Artist::with('performances', 'performances.stage')->get(); 

ich bisher bekommen haben:

public function stage() 
{ 
    return $this->hasOne('App\Models\Stage', 'id', 'stage_id'); 
} 

Irgendwelche Hilfe, wie ich das mache?

Antwort

0

ja können Sie eloquent Beziehung mit Query Builder wie diese sehr gut durch offizielle Dokumentation abgedeckt Es ist

$artists = Artist::join('performances', 'artists.id', '=', 'performances.artist_id') 
      ->all(); 


foreach($artists as $artist){ 
    $data = $artist->stage()->first(); 
} 
0

verwenden, bitte finden Sie in diesem Abschnitt von Documentation

Ich denke, dass Sie erreichen wollen so etwas wie dieses:

$posts = Post::whereHas('comments', function ($query) { $query->where('content', 'like', 'foo%'); })->get(); Und auch, bitte, lesen Sie sorgfältig this section

+0

Ich habe die Dokumente gelesen, kann aber nicht verstehen, wie die Beziehung funktioniert, die ich mit dem verschachtelten Join brauche. – Lovelock