2016-11-16 9 views
1

タイトルが言ったように、 vendorモデルを持っていたら、laravel ormの最後のインクリメントを取得する方法は?
laravel ormの最後のインクリメントを取得する方法は?

私はすでに答えを見つけましたが、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' 
+0

あなたが私を確認することができます下の答えを受け取り、それが効いたらそれを受け入れる?ありがとう! – Ronald

答えて

2

あなたはので、私は、後者にお答えします右の挿入後、または任意の時点で最後に挿入IDを取得したいかどうかは不明ですそれは最も単純ではありません。

あなた自身を書くとき、最後に挿入されたIDはテーブル自体に格納されず、表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(); 
0

あなたが最後に挿入IDを取得するために探しているなら、あなたはLaravelのクエリビルダの "insertGetId" メソッドを使用することができますが(https://laravel.com/docs/5.3/queries

例:

$id = DB::table('users')->insertGetId(
    ['email' => '[email protected]', 'votes' => 0] 
); 
関連する問題