Получение последних данных определенного столбца с помощью eloquent

#laravel #eloquent #greatest-n-per-group

#laravel #eloquent #наибольшее число пользователей на группу

Вопрос:

Как мне получить последние / последние данные каждого конкретного идентификатора пользователя.

Таблица отправки

ID идентификатор пользователя Статус created_at updated_at
1 3 повторить somedatetime somedatetime => dont want this
2 3 повторить somedatetime somedatetime
3 4 повторить somedatetime somedatetime
4 5 повторить somedatetime somedatetime

Идентификатор 2 не является избыточностью. Я отслеживаю записи. Мне нужно захватить идентификатор 2,3,4. Я пробовал использовать

 Submission::where('status','redo')->distinct('user_id')->get();
 

но он возвращает все значение

Обновить

Для справочных целей здесь приведена реальная структура таблицы

Таблица отправки

как вы можете видеть, user_id 78 имеет 2 повтора, которые равны 89 и 90. Я пытаюсь получить последнюю / последнюю, которая равна 90.

Комментарии:

1. попробуйте что-то вроде этого Submission::where('status','redo')->latest()->groupBy('user_id')->get();

2. @Joseph Я получаю идентификатор 1 вместо 2

3. не могли бы вы добавить результат, пожалуйста

4. @Joseph попробуйте проверить мое обновление. Спасибо

5. вы хотите получить последнюю запись для данного пользователя или последнюю запись для всех пользователей?

Ответ №1:

вы можете получить последние идентификаторы, а затем получить полные записи:

  $max_ids = Submission::query()
       ->where('status','redo')

        ->select('user_id', DB::raw('max(id) max_ids'))
        ->groupBy('user_id')->pluck('max_ids');

    $lasts = Submission::whereIn('id', $max_ids)->get();
 

Ответ №2:

Вы можете попробовать это с помощью вложенного запроса:

 Submission::from(Submission::orderBy('id', 'desc'), 't')
    ->groupBy('user_id')
    ->get();
 

Вероятно, придется внести коррективы, не проверенные, но идея заключается в том, что вспомогательный запрос получит упорядочение, тогда основной запрос выполнит группировку.

Комментарии:

1. не могли бы вы объяснить, что такое t буква во втором атрибуте from метода? мне нравится этот ответ, ты — род