コントローラーでトランザクションを開始し、互いに関係のない複数のモデルを保存するにはどうすればよいですか? 何かが失敗した場合は、明らかにロールバックしたいと思います。すべてが機能した場合はコミットします。
私の質問は、どのモデルで取引を開始するかということだと思います。
$datasource = $this->Car->getDataSource();
$datasource->begin($this->Car);
$car = $this->Car->save();
$dog = $this->Dog->save();
$house = $this->House->save();
if ($car && $dog && $house) {
$datasource->commit($this->Car);
} else {
$datasource->rollback($this->Car);
}
これは、犬と家だけでなく車も確実に救うために機能しますか? つまり、トランザクションがどのモデルで開始されるかは重要ですか?