在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表单提交问题的解决方法
Apr 12 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
PHP实现用户登录的案例代码
May 10 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
如何在PHP中使用AES加密算法加密数据
Jun 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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
python argparser的具体使用
2019/11/10 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
python列表返回重复数据的下标
2020/02/10 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
pymysql模块使用简介与示例
2020/11/17 Python
Django自带的用户验证系统实现
2020/12/18 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
介绍一下gcc特性
2012/01/20 面试题
连锁酒店店长职责范本
2014/02/13 职场文书
工程承诺书怎么写
2014/05/24 职场文书
学习保证书100字
2015/02/26 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
vue3中provide && inject的使用
2021/07/01 Vue.js
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS