2016-06-01 5 views
0

Я работаю над API, но теперь он начинает немного замедляться, когда данные растут. Я перемещаю некоторые из запросов, чтобы они использовали построитель запросов БД.Laravel - Использование вложенных отношений с построителем запросов

у меня последний, который имеет вложенный запрос:

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

я получил до сих пор:

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

Но теперь нужно сделать вторые отношения, которые в модели Performance являются:

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