CakePHP トランザクションを使う時は Model::saveAll() を使わないように
環境
- CakePHP 1.2.3.8166
問題
Model::saveAll() は内部でトランザクション処理をしている。
そのため、外側のロジックで制御しているつもりのトランザクションが、Model::saveAll() によって途中でコミットされてしまう。
対策
Model::saveAll() の第2引数へ array('atomic' => false) を渡す。
<?php $this->Model->begin(); $this->Model->saveAll($items, array('atomic' => false); $this->Model->commit(); ?>