Как сделать такую выборку с помощью eloquent?

Добрый день!

Как сделать такую выборку с помощью eloquent ?

Исходные данные: есть pivot-таблица, хранящая изменения статусов записей (record_id) по категориям с такими полями: id, record_id, category_id, old_status_id, updated_status_id, updated_at.

Задача такая: получить строку (если она есть) с последним по дате изменения статусом (например, равным 2) для определенной записи по каждой категории (если она есть в таблице).
Каждая запись имеет отношение с pivot-таблицей (один-ко-многим).

Думаю выглядеть должно как-то так:

return $query
            ->wherehas('status_repositories', function($q)
            {
                $q->groupBy('category_id')->having(function( $q_nest )
                    {
                        $q_nest->orderBy('updated_at', 'DESC')->take(1);
                    }
                )
                    ->where('updated_status_id', '2');
            });
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы