在laravel中实现事务回滚的方法

 更新时间:2019年10月10日 14:23:40   作者:chen529834149  
今天小编就为大家分享一篇在laravel中实现事务回滚的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

之前做项目用到了事务回滚这个机制。我把代码贴出来多多交流给点意见,我用的是laravel 5.1bane版本的,

public static function createDeal($to_status, $params, $new_balance, $update = true)
  {
    \DB::beginTransaction();
 
 
    try {
      $update_order_status = \DB::table('wallet_order')
                  ->where('order_id', $params['order_id'])
                  ->update(['to_status' => $to_status, 'update_time' => $params['pay_time']]);
      if (!$update_order_status) {
        throw new \Exception("update order error");
      }
 
 
      $create_deal_status = \DB::table('wallet_deal')
                  ->insert($params);
      if (!$create_deal_status) {
        throw new \Exception("create deal error");
        
      }
 
 
      if ($update) {        
        $update_manage_status = self::updateManage(['balance' => $new_balance, 'update_time' => $params['pay_time']], $params['from_user']);
        if (!$update_manage_status) {
          throw new \Exception("update manage error");
        }
      } else {
        $manage_params = [
          'user_id' => intval($params['from_user']),
          'balance' => $new_balance,
          'add_time' => $params['pay_time'],
          'update_time' => $params['pay_time'],
        ];
        $create_manage_status = self::createManage($manage_params);
        if (!$create_manage_status) {
          throw new \Exception("create manage error");
        }
      }
      \DB::commit();
    } catch (\Exception $e) {
		//异常处理进行回滚,自己想对应的业务
      \DB::rollback();
      $trouble_params = [
        'order_id' => $params['order_id'],
        'deal_id' => $params['deal_id'],
        'from_user' => $params['from_user'],
        'to_user' => $params['to_user'],
        'total_amount' => $params['total_amount'],
        'add_time' => $params['pay_time'],
        'type' => $params['type'],
        'to_status' => $to_status
      ];
      \DB::connection('mongodb')
        ->table('wallet_trouble')
        ->insert($trouble_params);
    } finally {
      self::createLog($params, $to_status);
    }
  }

以上这篇在laravel中实现事务回滚的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用

    PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用

    这篇文章主要介绍了PHP+jQuery+Ajax实现分页效果,以及jPaginate插件的应用
    2015-10-10
  • Yii2.0建立公共方法简单示例

    Yii2.0建立公共方法简单示例

    这篇文章主要介绍了Yii2.0建立公共方法,结合实例形式分析了Yii2.0建立公共方法的基本原理、步骤与相关操作注意事项,需要的朋友可以参考下
    2019-01-01
  • Yii2框架控制器、路由、Url生成操作示例

    Yii2框架控制器、路由、Url生成操作示例

    这篇文章主要介绍了Yii2框架控制器、路由、Url生成操作,结合实例形式分析了Yii2框架控制器、路由、url生成跳转等相关原理及操作技巧,需要的朋友可以参考下
    2019-05-05
  • PHP中strlen()和mb_strlen()的区别浅析

    PHP中strlen()和mb_strlen()的区别浅析

    这篇文章主要介绍了PHP中strlen()和mb_strlen()的区别浅析,本文探讨的中英混合的字符在使用这个函数时的区别,需要的朋友可以参考下
    2014-06-06
  • thinkphp5框架扩展redis类方法示例

    thinkphp5框架扩展redis类方法示例

    这篇文章主要介绍了thinkphp5框架扩展redis类方法,结合实例形式分析了thinkphp5框架扩展redis类的实现步骤、操作技巧与相关注意事项,需要的朋友可以参考下
    2019-05-05
  • Yii框架布局文件的动态切换操作示例

    Yii框架布局文件的动态切换操作示例

    这篇文章主要介绍了Yii框架布局文件的动态切换操作,结合实例形式分析了Yii框架控制器动态切换布局的相关实现技巧,需要的朋友可以参考下
    2019-11-11
  • CI框架无限级分类+递归的实现代码

    CI框架无限级分类+递归的实现代码

    CodeIgniter是一个轻量级但功能强大的PHP框架,基于MVC设计模式,提供了一套丰富的类库,简单易学,高效实用。下面给大家介绍CI框架无限级分类+递归的实现代码,感兴趣的朋友参考下吧
    2016-11-11
  • Yii框架分页实现方法详解

    Yii框架分页实现方法详解

    这篇文章主要介绍了Yii框架分页实现方法,结合实例形式详细分析了基于Yii框架实现分页的原理、步骤与相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • Yii框架 session 数据库存储操作方法示例

    Yii框架 session 数据库存储操作方法示例

    这篇文章主要介绍了Yii框架 session 数据库存储操作方法,结合实例形式分析了使用Yii框架session组件配置与数据库存储相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • php中使用array_filter()函数过滤空数组的实现代码

    php中使用array_filter()函数过滤空数组的实现代码

    这篇文章主要介绍了php中使用array_filter()函数过滤空数组的实现代码,这是浏览PHP手册时无意发意的一个有意思的array_filter()函数用法,需要的朋友可以参考下
    2014-08-08

最新评论