У меня есть две таблицы, Шоу и Эпизоды, в каждом эпизоде есть show_id, связывающий их один ко многим.
Теперь мне нужно получить последние 6 эпизодов, по одному на шоу, где show.active - true
Я пробовал следующий код:
$episodes = Episode::select(DB::raw('t.*'))
->from(DB::raw('(SELECT * FROM episodes ORDER BY id DESC) t'))
->whereHas('show', function($query) {
$query->where('active', '=', true);
})
->groupBy('t.show_id')
->take(6)
->get();
К сожалению, я получаю следующее:
Столбец не найден: 1054 Неизвестный столбец 'episodes.show_id' в 'предложении where'(SQL: выберите t. * Из (SELECT * FROM эпизодов ORDER BY id DESC) t где существует (выберите * из shows
, где episodes
. show_id
= shows
. id
и active
= 1) сгруппировать по t
. show_id
предел 6)
Я также пробовал:
$episodes = Episode::where('active', true)
->orderBy('id', 'DESC')
->whereHas('show', function($query) {
$query->where('active', '=', true);
})
->groupBy('show_id')
->take(6)
->get();
Это не показывает ошибки, но не возвращает последнее из каждого шоу, groupByполучает первую запись, мне нужна последняя