Получить последний ряд с помощью Laravel? - PullRequest
0 голосов
/ 16 сентября 2018

Похоже, я не получаю последнюю строку, когда строки имеют на самом деле created_at значение.

Использование $model->latest()->first() - я получаю первый ряд, а не последний ряд created_at.

Как это решить?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

latest() будет использовать столбец созданный по умолчанию.

Если все ваши значения create_at одинаковы, это, очевидно, не сработает ...

Вы можете передать имя столбца в latest(), чтобы сказать ему сортировать по этому столбцувместо этого.

Вы можете попробовать:

$model->latest('id')->first();

Предполагается, что у вас есть столбец инкрементного идентификатора.

0 голосов
/ 16 сентября 2018

Это будет полностью зависеть от того, какие другие данные у вас есть в вашей таблице.Любой запрос реляционной базы данных не учитывает «физическую позицию», то есть нет возможности получить «последнюю вставленную строку» таблицы, пока вы не сможете проверить какое-либо значение в таблице, котороеуказывает, что это вероятно последняя строка.

Один из распространенных способов сделать это состоит в том, чтобы в базе данных был автоматически увеличенный уникальный ключ (часто первичный ключ), и вы можете просто получить наибольшее значение в этом наборе. гарантированно не будет последней вставленной строкой, но для большинства приложений это обычно так.

Требуется эквивалентный запрос для выполнения

SELECT * FROM Table WHERE created_at = ? ORDER BY ID DESC LIMIT 1

или, в Eloquent ORM

$model->where('created_at', '=', ?)->orderBy('id', 'desc')->take(1)->first();

Имейте в виду, что вам, вероятно, понадобятся другие фильтры, поскольку вполне возможно, что другие пользователи или процессы могут вставлять записи одновременно, генерируя ту же дату создания, и выв конечном итоге с кем-то еще записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...