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


Posted in PHP onOctober 10, 2019

之前做项目用到了事务回滚这个机制。我把代码贴出来多多交流给点意见,我用的是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 相关文章推荐
php删除数组元素示例分享
Feb 17 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
php中define用法实例
Jul 30 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
php如何实现数据库的备份和恢复
Nov 30 PHP
laravel Model 执行事务的实现
Oct 10 #PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 #PHP
laravel框架数据库配置及操作数据库示例
Oct 10 #PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 #PHP
Laravel 实现关系模型取出需要的字段
Oct 10 #PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 #PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 #PHP
You might like
xajax写的留言本
2006/11/25 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
jquery 上下滚动广告
2009/06/17 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
银行毕业实习自我鉴定
2013/09/19 职场文书
团队精神演讲稿
2013/12/31 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
先进个人事迹材料
2014/12/29 职场文书
素质拓展训练感想
2015/08/07 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript
Redis分布式锁的7种实现
2022/04/01 Redis