FuelPHP でインサート処理をする際に、そのテーブル内の Max+1 な ID を取得する事案があったので。
仕様
以下のようなテーブルがあった場合に
+--------+----------+------------+
| col_id | col_name | date |
+--------+----------+------------+
| 1 | test | 1969-01-29 |
+--------+----------+------------+
idは「最大値+ 1 (max+1)」の値をもってインサート処理
新しく取得したidは別の処理で使う
余談
通常の SQL の場合の Max+1 の ID 取得方法
「連番を INSERT と同時に挿入する方法」で以前書いた通り、
INSERT INTO テーブル名( 連番を入れるカラム, EXAMPLE_ID, EXAMPLE_NAME )
SELECT COALESCE(MAX(連番を入れるカラム)+1,1), ?, ?
FROM テーブル名;こんな感じでいける。
FuelPHP Insert()の戻り値について
ドキュメントに以下のような Inset の場合に「インサートされた ID のリストと、インサートされた レコード数を含む配列が返却される」とある。
list($insert_id, $rows_affected) = DB::insert('users')->set(array(
'name' => 'John Random',
'email' => 'john@example.com',
'password' => 's0_s3cr3t',
))->execute();ただし、この戻り値の「インサートされた ID」はAUTO_INCREMENTの話なので、そうでない場合は意味をなさない。