我正在开发一个API,但是现在数据正在增加,它开始变得有点慢。我正在移动一些查询,以便他们使用数据库查询构建器。
我的最后一个有嵌套查询:
$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 :(得分:0)
是的,你可以像这样使用与查询构建器的雄辩关系
$artists = Artist::join('performances', 'artists.id', '=', 'performances.artist_id')
->all();
foreach($artists as $artist){
$data = $artist->stage()->first();
}
答案 1 :(得分:0)
官方文档非常清楚,请参阅Documentation
的这一部分我认为你想要实现这样的目标:
$posts = Post::whereHas('comments', function ($query) {
$query->where('content', 'like', 'foo%');
})->get();
另外,请仔细阅读this section