Laravel - 使用与查询构建器的嵌套关系

时间:2016-06-01 08:24:31

标签: php laravel laravel-5

我正在开发一个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');
}

关于我如何做到这一点的任何帮助?

2 个答案:

答案 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