【发布时间】:2013-01-16 18:16:15
【问题描述】:
有没有办法在调用rollback 动作时向CDbConnection 添加动作?
我有这段代码,它可以工作:
$transaction = $model->dbConnection->beginTransaction();
try {
//...
//doing some manipulations
//...
if($model->save()) {
$transaction->commit();
$this->redirect(array('view','id'=>$model->id));
}
} catch(Exception $e) {
$transaction->rollback();
throw $e;
}
有没有办法恢复调用$transaction->rollback(); 时所做的操作而不将此代码放入catch 语句中,例如在事务回滚函数上添加事件。
也许Behaviours and Events 有一个解决方法,但我不确定它是如何工作的。
谢谢!
编辑 - 我想做的是:
当模型保存失败时,数据库会回滚,但我也在对文件进行一些操作(在验证和保存模型之前我需要这样做),所以如果模型失败由于验证保存,我需要将这些更改恢复到文件。
【问题讨论】:
-
你到底想做什么?
-
我已经编辑了我的问题。