【问题标题】:cakePHP - conditional save, can it be done?cakePHP - 有条件的保存,可以吗?
【发布时间】:2011-09-06 01:10:22
【问题描述】:

场景: 控制器中保存数据的方法是对第一次Model->save() 调用的结果进行一些复杂的计算。 然后将结果保存在相关的关联模型中。有时它会失败..

有没有一种内置的方式来处理 cake,当第二次保存失败时会删除第一条记录?

【问题讨论】:

  • 你熟悉模型回调函数吗?你也许可以用它们来想出一些东西。 reference here
  • 不,现在就去那里。谢谢
  • 他们为我省去了很多麻烦,并且很容易让你将一堆逻辑从控制器推到模型中。

标签: cakephp save conditional undo


【解决方案1】:

如果您在不先保存到数据库的情况下绝对无法在应用中进行这些计算,请使用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

【讨论】:

  • 正是我要找的东西! tnx
  • 所有神话中的蛇引用都会立即获得 +1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
相关资源
最近更新 更多