方案:
控制器中保存数据的方法是对第一个Model->save()
调用的结果使用一些复杂的计算。
然后将结果保存在相关的模型中。有时会失败..
有没有内置的方法来做蛋糕,当第二次保存失败时会删除第一条记录?
答案 0 :(得分:4)
如果您在未首先保存到数据库中的情况下绝对无法在应用中执行这些计算,请使用Transactions:
$dbo = $this->Model->getDataSource();
$dbo->begin($this->Model);
$this->Model->save(...);
/* here be dragons */
if (/* success */) {
$dbo->commit($this->Model);
} else {
$dbo->rollback($this->Model);
}
这要求您使用支持交易的数据库和存储引擎,例如MySQL's InnoDB。