在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 数组入门教程小结
May 20 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
PHP常用字符串函数用法实例总结
Jun 04 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实现的生成静态HTML速度快类库
2007/03/31 PHP
PHP编实现程动态图像的创建代码
2008/09/28 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
extjs render 用法介绍
2013/09/11 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
vue 动态创建组件的两种方法
2020/12/31 Vue.js
Python实现堆排序的方法详解
2016/05/03 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
用Python实现数据的透视表的方法
2018/11/16 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
幼儿教师寄语集锦
2014/04/03 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python