Конвертировать Query Builder в Eloquent Builder - PullRequest
1 голос
/ 28 марта 2020

Я не могу извлечь результат в 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();

1 Ответ

0 голосов
/ 28 марта 2020

Кажется, Floder hasMany Matter, Matter hasMany Tutorial.

Вы можете создать hasManyThrough отношение в Folder Model и использовать где , чтобы найти 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();
...