有没有办法在调用动作CDbConnection
时添加动作rollback
?
我有这段代码,它可以工作:
$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
语句中,例如在事务回滚函数上添加事件。
也许Behaviors 和 Events有一种解决方法,但我不确定它是如何工作的。
谢谢!
编辑-我想做的是:
当模型保存失败时,数据库会回滚,但我也在对文件进行一些操作(在验证和保存模型之前我需要这样做),所以如果模型因为以下原因而无法保存验证后,我需要将这些更改还原到文件中。