在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 管理系统程序中的后门
Aug 05 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
php类的扩展和继承用法实例
Jun 20 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
PHP实现的链式队列结构示例
Sep 15 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php从字符串创建函数的方法
2015/03/16 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
js常用代码段整理
2011/11/30 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
python中__slots__用法实例
2015/06/04 Python
python数据结构之图的实现方法
2015/07/08 Python
Python中enumerate函数代码解析
2017/10/31 Python
Python常用的json标准库
2019/02/19 Python
Python进度条的制作代码实例
2019/08/31 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
《怀念母亲》教学反思
2016/02/19 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
MYSQL 运算符总结
2021/11/11 MySQL