CakePHPでMySQLのトランザクションを使う方法は下記公式ページに書いてありますが、ちょっと補足を。
http://book.cakephp.org/2.0/ja/models/transactions.html
実際に利用する際は、コントローラーから利用したい場合も多いですよね。
しかし、
$dataSource = $this->getDataSource();
はModelに書かないと動作しません。
Modelに記述して、コントローラーから呼び出せばいいだけなんですが、サンプルを書いておきます。
//モデルファイル(Model>Examination.php) class Examination extends AppModel { public $name = 'Examination'; function startTransaction(){ $dataSource = $this->getDataSource(); $dataSource->begin(); } function commitTransaction(){ $dataSource = $this->getDataSource(); $dataSource->commit(); } function rollbackTransaction(){ $dataSource = $this->getDataSource(); $dataSource->rollback(); } }
//コントローラー(Controller>ExaminationController.php) class ExaminationsController extends AppController { public function use_transaction(){ //データベースでのトランザクション開始 $this->Examination->startTransaction(); //処理を書く $this->Examination->commitTransaction(); } }
- $this->Model->getDataSource();と書けばいいんですよ。 — {2014-06-27 (金) 16:05:18}