環境 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(); ?> 参考 CakePHP API Model::saveAll()