CakePHPでトランザクション処理(メモ)
しばらく放置してあった作成中のアプリ、
時間が取れたので作成を進めることができました。
今日はCakePHPでトランザクション処理に挑戦しました。
MySQLのストレージエンジンがInnoDBである必要があるようです。
調べてみたら、私の使っているMySQL5.5は、InnoDBがデフォルト
のストレージエンジンになっているとの事。
さっそく試してみました。
まず、begin() commit() rollback()を作るみたいで、検索してみると
app_modelに作る方法があったのでそれを採用。
①cake/libs/model/app_model.phpをapp/models配下にコピーし、関数を追加
function begin() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->begin($this);
}
function commit() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->commit($this);
}
function rollback() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->rollback($this);
}
②トランザクション処理を処理に追加
※呼び出しかたは、
モデル->begin();
モデル->commit();
モデル->rollback();
これだけでした。。。
動かしてみたらちゃんと動いてました。
楽チンでした。
時間が取れたので作成を進めることができました。
今日はCakePHPでトランザクション処理に挑戦しました。
MySQLのストレージエンジンがInnoDBである必要があるようです。
調べてみたら、私の使っているMySQL5.5は、InnoDBがデフォルト
のストレージエンジンになっているとの事。
さっそく試してみました。
まず、begin() commit() rollback()を作るみたいで、検索してみると
app_modelに作る方法があったのでそれを採用。
①cake/libs/model/app_model.phpをapp/models配下にコピーし、関数を追加
function begin() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->begin($this);
}
function commit() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->commit($this);
}
function rollback() {
$dbs = & ConnectionManager::getDataSource($this->useDbConfig);
$dbs->rollback($this);
}
②トランザクション処理を処理に追加
※呼び出しかたは、
モデル->begin();
モデル->commit();
モデル->rollback();
これだけでした。。。
動かしてみたらちゃんと動いてました。
楽チンでした。
スポンサーサイト