Laravel実装のちょっとメモです。

LAST INSERT IDとは

LAST INSERT IDとはオートインクリメントによって自動生成された値を指します。

PostgreSQLではINSERT実行前にオートインクリメントキーの実値を確保することができます。
これに対しMySQLではINSERTを実行するまでオートインクリメントキーが確定しませんので、ちょっとした手間がかかります。

具体例としてPHPマニュアル掲載のコードを引用します。

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
:
略
:
mysqli_query($link, "CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
mysqli_query($link, $query);

printf ("New Record has id %d.\n", mysqli_insert_id($link)); // New Record has id 1.

PHPマニュアル – mysqli_insert_id
http://php.net/manual/ja/mysqli.insert-id.php

[ VALUES (NULL, ]が、オートインクリメントキーに相当する箇所です。

NULL、、、
NULLはホント、困ります。

繰り返しになりますが、オートインクリメントキーはMySQLが採番を担当するため、INSERTが完了するまでその値が分かりません
そのため、INSERT後に「今扱ったオートインクリメントキー」を問い合わせます。

上記のサンプルではmysqli_insert_id()が、その問い合わせを行っている箇所です。

Eloquen ORMでは

save()するだけでオートインクリメントキーにアクセスできます。

<?php

$user = new User();
$user->name  = "atuweb";
$user->email = "info@example.com";
$user->save();

$last_insert_id = $user->id;

簡単、楽勝です!

おわりに

LaravelのEloquen ORMではsave()するだけでLAST INSERT IDを扱うことができます!

stackoverflowの以下も参考にどうぞ。

Laravel, get last insert id using Eloquent
http://stackoverflow.com/questions/21084833/laravel-get-last-insert-id-using-eloquent

この記事はtomita@atuwebがお届けしました。


スポンサーリンク
ad_336
ad_336
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
ad_336