2016年4月11日月曜日

cakephp3 DB トランザクション -- DB transaction --

PHP Ver 5.6.27
CakePHP Ver 3.1.9



cakephp3 DB トランザクション


利用方法(※Controllerに記述を行う場合)
== 単一テーブルの登録・更新 ==
・begin
$this->{Model}->connection()->begin();

・commit
$this->{Model}->connection()->commit();

・rollback
$this->{Model}->connection()->rollback();

== 複数テーブルの登録・更新 ==
use Cake\Datasource\ConnectionManager;

$connection = ConnectionManager::get('default');

$connection->begin();

$connection->commit();

$connection->rollback();


ConnectionManagerで指定している「default」は、config/app.phpの「Datasources」で指定しているものになるが、
固定だとdebug機能がうまく使えなくなってしまうので、以下のようにした方が良いと思われる。

$this->loadModel('{Model}');
$connection = ConnectionManager::get($this->{Model}->defaultConnectionName());


Moelクラスに記述するのは、エラー処理などを考えると個人的に嫌いなので割愛

0 件のコメント:

コメントを投稿