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}
