Спокойной ночи. Я пытаюсь получить последний и только 1 элемент из базы данных. Но проблема в том, что в базу данных одновременно были внесены 3 объекта. Таким образом, дата точно такая же с точностью до секунды. Как мне получить последнюю информацию по дате created_at и идентификатору>
Посмотрите, что у меня было ниже, что вызывало проблему:
$latest = $newInv->where('case_number', $request-> case_number)
->orderBy('created_at', 'DESC')
->latest()->first();
То, что я надеялся сделать, но все еще терпит неудачу, может быть, мне лучше это написать?
$latest = $newInv->where('case_number', $request->case_number)
->orderBy('created_at', 'DESC')
->orderBy('id', 'ASC')
->latest()->first();


Не нужно добавлять latest() и упорядочивать по id в запросе,
следующее должно работать,
$latest = $newInv->where('case_number', $request->case_number)
->orderBy('created_at', 'DESC')->first();
ДОКУМЕНТЫ
Последние и самые старые методы позволяют легко упорядочивать результаты по дате. По умолчанию результат будет упорядочен по столбцу created_at. Или вы можете передать имя столбца, по которому хотите сортировать:
$user = DB::table('users')->latest()->first();
Смотрите больше на https://laravel.com/docs/5.7/queries#ordering-grouping-limit-and-offsetv
ОБНОВИТЬ
Если у вас такое же значение для created_at, тогда должно работать следующее:
ЗАМЕТКА: вам нужно упорядочить по id в порядке убывания, чтобы получить запись с> ID
$latest = $newInv->where('case_number', $request->case_number)
->orderBy('created_at', 'DESC')
->orderBy('id', 'DESC')
->first();
У меня все еще не работает. Я дал 5 записей с одинаковым точным временем created_at с точностью до секунд, и это все еще выбор последней с использованием метода ur. : '(
@Slygoth, затем добавьте заказ по столбцу идентификатора сразу после создания в
Всегда последний идентификатор должен иметь самую последнюю дату created_at