在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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
PHP执行速率优化技巧小结
Mar 15 PHP
一个很不错的PHP翻页类
Jun 01 PHP
PHP学习之整理字符串
Apr 17 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
php curl操作API接口类完整示例
May 21 PHP
PHP 文件上传限制问题
Sep 01 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
详解python变量与数据类型
2020/08/25 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
项目投资意向书
2014/04/01 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
亮剑精神观后感
2015/06/05 职场文书