Как сделать такую выборку с помощью 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');
            });
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
4px Москва
от 100 000 до 150 000 руб.
Digital-агентство Nimax Санкт-Петербург
от 80 000 до 110 000 руб.
ПИК Аренда Москва
от 140 000 руб.
20 авг. 2018, в 07:25
180000 руб./за проект
20 авг. 2018, в 02:05
1000 руб./за проект