CakePHP3系でのトランザクション処理の実装

CakePHP

2015年05月01日(金)

データの整合性をとるために良く利用されるトランザクション処理ですが、CakePHP2系とはまたちょっと違う感じだったのでTipsがてらに紹介させていただきます。3系まだなれないなぁ。徐々に徐々にシフトしていければと。。。

 

トランザクション処理

それでは使用例とログをみて確認しましょう。

以下の処理はサンプルなので実用としては使わないと思いますが、実装サンプルとして見てください。w

 // トランザクション開始
 $this->Users->connection()->begin();

 if ($this->Users->save($user)) {
     $this->Flash->success('The user has been saved.');

     // コミット
     $this->Users->connection()->commit();
 } else {
     // バリデーションエラー表示
     debug($user->errors());
     $this->Flash->error('The user could not be saved. Please, try again.');
     // ロールバック
     $this->Users->connection()->rollback();
 }

まぁなんの変哲もない会員登録の処理です。

それぞれ太字で記述したものが、begin/commit/rollback 処理です。

実際に使用してみたログがあるのでそちらでも確認してみるのが早いと思います。

 

登録成功の場合の画面キャプチャ(ログ)

CakePHP- the rapid development php framework- Users

 

登録失敗した際の画面キャプチャ(ログ)

CakePHP- the rapid development php framework- Users (1)

 

見ての通りトランザクション処理がされていることが確認できると思います。

2系とは少し記述の仕方が違いましたが、使い方は一緒のようですので安心して使うことにしましょう。

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR