在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 mysql数据库操作类
Jun 04 PHP
php 常用类汇总 推荐收藏
May 13 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
PHP中的traits简单使用实例
May 13 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 PHP
Git命令之分支详解
Mar 02 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/07/29 PHP
2014过年倒计时示例
2014/01/31 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
python实现备份目录的方法
2015/08/03 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
python 如何调用远程接口
2020/09/11 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书