在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 09 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
解析php file_exists无效的解决办法
Jun 26 PHP
php使用codebase生成随机数
Mar 25 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
laravel批量生成假数据的方法
Oct 09 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
用header 发送cookie的php代码
2007/03/16 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
jquery随机展示头像代码
2011/12/21 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
python图像常规操作
2017/11/11 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python主线程捕获子线程的方法
2018/06/17 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
Django工程的分层结构详解
2019/07/18 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
Python argparse模块应用实例解析
2019/11/15 Python
python dict乱码如何解决
2020/06/07 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
什么是.net
2015/08/03 面试题
出国留学介绍信
2014/01/13 职场文书
医学生求职自荐书
2014/06/12 职场文书
公司安全管理制度范本
2015/08/05 职场文书