如何在Yii事件中使用交易

第三

我知道如何在纯DAOActiveModel中使用事务,在事务调用之前初始化事务$model->save()并在发生任何异常时回滚。

但是,如果我可以访问的唯一代码(无论为什么)是Yii事件,那么如何使用事务

public function beforeDelete()
{
    foreach($this->menuItems as $menuItem) $menuItem->delete();

    return parent::beforeDelete();
}

如果我在那里发起事务,捕获可能的异常并在其上回滚整个事务,那么将仅回滚关系模型的删除(在这里:菜单项)。它不会阻止(回滚)主记录的删除。

通过FALSEbeforeDelete异常情况下自己返回防止删除主记录,这是否是我需要照顾的?还是应该在Yii事件中完全避免交易?

亚历克斯

关于覆盖保存方法:

public function save($runValidation=true,$attributes=null)
{
    $transaction=$this->getDbConnection()->beginTransaction();
    try
    {
        $result = parent::save($runValidation,$attributes);
        if($result)
            $transaction->commit();
        else
            $transaction->rollback();
    }
    catch(Exception $e)
    {
        $transaction->rollback();
        $result = false;
    }
    return $result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Yii事件中使用交易

来自分类Dev

如何在Cloud Datastore中使用交易

来自分类Dev

如何在Slick中使用交易

来自分类Dev

如何在firebase中使用交易的承诺'.then'组件

来自分类Dev

如何在 Corda 中使用 Oracle 服务签署交易?

来自分类Dev

如何在addCondition,YII中使用If语句

来自分类Dev

如何在Yii中使用jQuery?

来自分类Dev

如何在yii的cdbCriteria中使用SUM?

来自分类Dev

如何在yii中使用邮件功能

来自分类Dev

如何在 Yii 中使用 SetCC

来自分类Dev

如何在CDI事件中使用参数?

来自分类Dev

如何在AngularJS中使用Keydown事件

来自分类Dev

如何在onmouseleave事件中使用RGBA?

来自分类Dev

如何在qml中使用SwipeView的事件?

来自分类Dev

如何在Yii中使用yii \ base \ model:getAttributes()方法?

来自分类Dev

如何在jQuery中使用onchange事件触发datarangepicker事件?

来自分类Dev

如何在Yii :: app()-> clientScript-> registerScript中使用ajax

来自分类Dev

如何在Yii框架的CDbCriteria()中使用案例语句?

来自分类Dev

如何在Yii框架中使用HTTP PING?

来自分类Dev

如何在Yii中使用CFileCache和Memcache

来自分类Dev

如何在yii中使用正则表达式

来自分类Dev

如何在Gridview中使用相关表:Yii2

来自分类Dev

如何在Yii中使用CDbCriteria对多个参数进行分组?

来自分类Dev

如何在YII框架中使用SQL请求

来自分类Dev

如何在Yii2中使用swiftMailer

来自分类Dev

如何在yii2 ActiveRecord中使用查询缓存

来自分类Dev

如何在yii2中使用Flash消息?

来自分类Dev

如何在Yii 2中使用registerMetatag

来自分类Dev

如何在yii2中使用Create Command?