我知道,如何在纯 DAO或ActiveModel中使用事务,其中事务在调用之前启动$model->save()
并在任何异常时回滚。
但是如何使用事务,如果我唯一可以访问的代码位置(不管,为什么)是Yii 事件?
public function beforeDelete()
{
foreach($this->menuItems as $menuItem) $menuItem->delete();
return parent::beforeDelete();
}
如果我在那里启动事务,捕获可能的异常并在其上回滚整个事务,那么只会回滚关系模型(此处:菜单项)的删除。它不会阻止(回滚)删除主记录。
FALSE
通过在异常情况下返回我自己的方法来防止删除主记录,beforeDelete
我需要在这里注意吗?或者我应该在 Yii 事件中完全避免交易吗?