Как получить последний прирост в Laravel Orm?
Как сказано в названии, если бы я имел vendor
модель, как получить последний прирост в Laravel Orm?
Я уже нахожу ответ, но не могу перевести его на правильный путь. Любая идея?
Случай 1:
SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'table_name'
AND table_schema = DATABASE( ) ;
случай 2:
SHOW TABLE STATUS LIKE 'table_name'
2 ответа
Неясно, хотите ли вы получить последний вставленный идентификатор сразу после вставки или в любой момент времени, поэтому я отвечу на последний, поскольку он наименее прост.
Когда вы пишете сами, последний вставленный идентификатор хранится не в самой таблице, а в таблице information_schema.tables, поэтому вы не можете использовать модель для получения этой информации. Однако вы можете использовать построитель запросов в Laravel для этого.
$last_insert_id = DB::table('information_schema.tables')
->where('table_name', $table_name)
->whereRaw('table_schema = DATABASE()')
->select('AUTO_INCREMENT')->first();
Если вы ищете последний вставленный идентификатор, вы можете использовать метод "insertGetId" в построителе запросов Laravel ( https://laravel.com/docs/5.3/queries)
Пример:
$id = DB::table('users')->insertGetId(
['email' => 'john@example.com', 'votes' => 0]
);