在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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
PHP命令行与定时任务
Apr 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
PHP 数组实例说明
2008/08/18 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
利用Python破解斗地主残局详解
2017/06/30 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
python如何制作缩略图
2019/04/30 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
Django框架反向解析操作详解
2019/11/28 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
经理职责范文
2013/11/08 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
求职自荐信的格式
2014/04/07 职场文书
护理工作个人总结
2015/03/03 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏