在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更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP sprintf()函数用例解析
May 18 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
php实例分享之mysql数据备份
May 19 PHP
ThinkPHP框架设计及扩展详解
Nov 25 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
PHP验证码生成原理和实现
Jan 24 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
PHPstorm快捷键(分享)
Jul 17 PHP
Laravel 验证码认证学习记录小结
Dec 20 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出错界面
2006/10/09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
非常实用的php验证码类
2016/05/15 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
详解Python 最短匹配模式
2020/07/29 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
安全生产责任书范本
2014/04/15 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
关于颐和园的导游词
2015/01/30 职场文书
一文弄懂MySQL索引创建原则
2022/02/28 MySQL