トランザクション(try,catch,rollback)の実装【CakePHP4】

DataBaseの絡むプログラムを実装するには、整合性の保持のために、エラーが出たら処理前の状態に戻す(ロールバックする)必要性があります。

今回は、これをCakePHPで実装する方法を解説します。

以下のように簡単に実装できます。

実装例

以下、コードの例です。

//src/Controller/SamplesController.php

<?php
use Cake\Datasource\ConnectionManager;

class SamplesController extends AppController
{

    //トランザクション開始
    $connection = ConnectionManager::get('default');
    $connection->begin();

    try {
       //処理・・・

       //エラーが発生していなければ処理を実行
       $connection->commit();
    }catch(\Exception $e) {
       //例外処理・・・

       //ロールバック
       $connection->rollback();
    }

}

try,catchと組み合わせて、異常時にはrollbackすることで簡単に実装できます。

DBへのデータ保存を行う際には、不整合が生じないように必ず実装するようにしましょう。

参考

CakePHP 4.x Strawberry Cookbook:データベースの基本

コメント

タイトルとURLをコピーしました