cakePHP - 有条件的保存,可以吗?

Posted

技术标签:

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

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

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

【问题讨论】:

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

以上是关于cakePHP - 有条件的保存,可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cake 3.0 中保存 belongsToMany 数据?

Cake php 4 使用数组中的关联保存数据

CakePHP- 保存相关模型数据

CakePHP:hasOne 相关表在更新时保存多个条目

调用未定义的方法 Cake\ORM\Entity::query() CakePhp

CakePhp : Cake bake 在 Ubuntu 上不起作用。 (PDO异常)