将查询生成器转换为 Eloquent 生成器

Convert Query Builder to Eloquent Builder

我无法在 groupby 中提取结果,下面的查询构建器工作得很好,但我希望它 Eloquent。 我只想显示关系中已有的文件夹?

如何将查询生成器转换为 Eloquent?

$folders = Folder::select('folders.id','folders.title')
    ->join('matters', 'matters.folder_id', '=', 'folders.id')
    ->join('tutorials', 'tutorials.matter_id', '=', 'matters.id')
    ->whereDate('tutorials.start', '=', date('Y-m-d'))
    ->where('tutorials.status','=','0')
    ->groupby('folders.id')
    ->get();

好像Floder有很多Matter,Matter有很多Tutorial.

您可以创建 hasManyThrough relationship in Folder Model, and use whereHas 来查找 folders

$folders = Folder::whereHas('tutorials', function($query) {
                     $query->whereDate('tutorials.start', '=', date('Y-m-d'))
                           ->where('tutorials.status','=','0');
                 })->select('title', 'id')->get();

如果你没有 hasManyThrough 关系,你仍然可以获得 folders 这样的:

$folders = Folder::whereHas('maters.tutorials', function($query) {
                     $query->whereDate('tutorials.start', '=', date('Y-m-d'))
                           ->where('tutorials.status','=','0');
                 })->select('title', 'id')->get();