cakePHP トランザクションを使う

MySQL
PHP
CakePHP2.3.1

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}
カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です