概要 先日、 CakePHP3 においてトランザクションが予期せずロールバック/コミットされてしまうという深刻な不具合が報告されました。 問題の概要把握のために、まずは下記のコードをご覧ください。 $this->loadModel('Bookmarks'); $this->Bookmarks->connection()->transactional(function(){ $this->Bookmarks->findOrCreate(['user_id' => -1]); $this->Bookmarks->Users->findOrCreate(['id' => null]); return false; }); このコードでは transactional() 中で二度の findOrCreate() を呼び出した後、最後に false を返すことで意図的にロールバックさせています。つま