2016-06-01 6 views
0

APIで作業していますが、データが増加しているので少し遅くなり始めました。私はDBクエリービルダーを使用するようにいくつかのクエリーを移動しています。Laravel - クエリビルダーとネストされたリレーションシップを使用する

私は、ネストされたクエリを持っている私の最後の1持っている:

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

を私がこれまで持っている:

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

しかし、今のパフォーマンスモデルである第2の関係を実行する必要があります。

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

どのように私はこれを行うには?

答えて

0

はいあなたはそれが非常によく、公式ドキュメントで覆われている。この

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


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

ようなクエリビルダで雄弁な関係を使用することができ、Documentation

のこのセクションを参照してください、私はあなたが達成したいと思いますこのような何か:

$posts = Post::whereHas('comments', function ($query) { $query->where('content', 'like', 'foo%'); })->get(); も、してください、慎重に読んthis section

+0

私はドキュメントを読んだことがありますが、ネストされた結合で必要なように関係をどうやって行うのか理解できません。 – Lovelock

関連する問題