У меня есть следующий подзапрос:
->whereHas('statuses', function($query){
$query->where('status_id', request('status'));
})->orderBy(...)->paginate();
Для простоты я скрыл полный запрос. Допустим, у меня есть сводная таблица user_status
. У пользователя много статусов, и у статуса может быть много пользователей (я знаю, что это необычно. Просто рассмотрим это в качестве примера). Поэтому, когда я запрашиваю сводную таблицу user_status
, как описано выше, я получаю те строки, которые имеют запрошенный идентификатор статуса. Но я также хочу добавить ограничение, что строка должна быть самой последней для этого конкретного пользователя (не во всей таблице). Вот как выглядит таблица user_status:
+---------+-----------+---------------------+
| user_id | status_id | created_at |
+---------+-----------+---------------------+
| 1 | 1 | 2018-09-03 18:39:14 |
| 1 | 8 | 2018-09-03 18:51:42 |
+---------+-----------+---------------------+
В этом сценарии, если запрошенный status
равен 1
, я не хочу, чтобы эта строка возвращалась, поскольку status_id
1 не самая последняя для user_id
1 (см. Разницу во времени) в столбце create_at
).
Как мне этого добиться?