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へのデータ保存を行う際には、不整合が生じないように必ず実装するようにしましょう。
コメント