zoukankan      html  css  js  c++  java
  • Yii---使用事物

    YII使用事物的时候,遇到的一些小问题总结:开始事物,后要进行事物提交,才能操作数据库(折腾了一天)具体使用:

    yii事物的定义:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

    Yii2.0 事物的应用:

    $transaction = Yii::$app->db->beginTransaction();
    try {
        $connection->createCommand($sql1)->execute();
        //如果执行失败则抛出错误
        if(status == false)
            throw new Exception('这里是错误原因');
        $connection->createCommand($sql2)->execute();
    
        $transaction->commit();            //只有执行了commit(),对于上面数据库的操作才会真正执行
    }catch (Exception $e) {
        $error = $e->getMessage();  //获取抛出的错误
        $transaction->rollBack();    
    }

    以上即是数据库事务的简单应用。事务的应用在于多表操作,只有所有数据库操作都成功了,才会执行,其中一个地方失败,就不会执行,以保证数据库动作的完整性。

    实例

    下面是一个删除的事务实例,我们要达到的目的是删除model时也同时要删除relation,如果其中一步失败则callback

    $transaction = Yii::$app->db->beginTransaction();
    try{
        //删除$model中的数据
        $res = $model->deleteAll($cond);
        if(!$res)
            throw new Exception('操作失败!');
        
        //删除$model对应的$relation中的数据
        $rt = $relation->deleteAll(['polymeric_id'=>$cond['id']]);
        if(!$rt)
            throw new Exception('操作失败!');
        
        //以上执行都成功,则对数据库进行实际执行
        $transaction->commit(); 
        return Helper::arrayReturn(['status'=>true]);
    }catch (Exception $e){
        //如果抛出错误则进入catch,先callback,然后捕获错误,返回错误
        $transaction->rollBack();
        return Helper::arrayReturn(['status'=>false,'msg'=>$e->getMessage()]);
    }

    我的示例代码:

    $transaction = Yii::$app->db->beginTransaction();
    try{
        if(!$this->delForumThread($threadId)){
            throw new Exception('操作失败!');
        };
        // 以上都执行成功 则对数据库进行实际的操作
        $transaction->commit();
    }catch(Exception $e){
        $error = $e->getMessage();  //获取抛出的错误
        $this->error($error);
        $transaction->rollBack();
    };
  • 相关阅读:
    json作为参数传入函数
    js 获取input type="file" 选择的文件大小、文件名称、上次修改时间、类型等信息
    jquery 如何控制滚动条每次向下滚动300px
    [if lt IE 9]
    JS代码判断IE6,IE7,IE8,IE9!
    ios __block typeof 编译错误解决
    ios json结构
    iOS --创建文件夹 ,删除文件夹
    iOS --生产JSON格式,创建JSON文件,创建文件夹,指定储存
    转载 -- iOS开发之JSON格式数据的生成与解析
  • 原文地址:https://www.cnblogs.com/e0yu/p/10071198.html
Copyright © 2011-2022 走看看