CakePHPでテーブルへINSERT後のIDを取得する方法

こんにちは!ぐちです。

CakePHPの小技集としてシリーズ化(?)しようかなと思ってみたりしていますがちょっとしたTips的なものをご紹介したいと思います。

INSERT

どんなシステムでもほぼ間違いなく行っていると思われるデータ登録の処理 [INSERT] ですが、データ登録後にIDが必要な場面ってけっこうありますよね?例えばユーザーの登録後にそのIDをキーに関連するテーブルへデータを登録するなど。

INSERT処理は下記のように書きます。

class IndexController extends AppController {
    public $uses = array('TblHoge');

    public function index() {
        // 登録するデータ
        $data = array(
            'TblHoge' => array(
                'name' => 'hoge',
                'age' => 20
            ));

        // 登録するフィールド
        $fields = array(
            'name',
            'age'
        );

        if($this->TblHoge->save($data, false, $fields)) {
            // 登録成功時の処理
        } else {
            // 登録失敗時の処理
        }
    }
}

最終更新IDを取得

上記のようにCakePHPではINSERT処理を行う場合はsave()メソッドを呼ぶのですがその際に登録されたIDを取得する方法が下記になります。save()の部分だけを抜粋します。

if($this->TblHoge->save($data, false, $fields)) {
    // 登録成功時の処理
    $id = $this->TblHoge->getLastInsertID();
} else {
    // 登録失敗時の処理
}

では今回はこの辺で。