Как получить последний прирост в 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]
);
Другие вопросы по тегам