CakePHP2.xでトランザクションする方法

CakePHP
記事内に広告が含まれています。

DBに登録する時に使う「トランザクション」ですが、CakePHP2.xでの方法をまとめます。
あんまり Cake1.3 と変わってなかったので、一安心です。

動作は CakePHP2.3.6 で試しています。

DBのトランザクションについて

まずは公式を確認。

には、

トランザクションを実行するには、テーブルの種類がトランザクションをサポートしている必要があります。

全てのトランザクションメソッドは、モデルのデータソースオブジェクトが実行しなければなりません。モデルの内部でデータソースを取得するには、以下を使用してください。

これで、データソースを用いてトランザクションを開始・コミット・ロールバックすることができるようになりました。

とありました。

「そのつどデータソースを取得して」ってのはちょっと面倒なので、以下のようにしてみました。
AppModel.phpに以下を記述。

 

んで、使いたいところで下記を記述すれば、beginで開始、commitで完了、rollbackでロールバックが可能。

開始

$this->Model->begin();

完了

$this->Model->commit();

ロールバック

$this->Model->rollback();

 

関連するかもしれないポスト

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