当前位置:首页 > CMS教程 > 其它CMS > 列表

在laravel中实现事务回滚的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-30 10:53:54 浏览: 评论:0 

今天小编就为大家分享一篇在laravel中实现事务回滚的方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

之前做项目用到了事务回滚这个机制,我把代码贴出来多多交流给点意见,我用的是laravel 5.1bane版本的。

  1. public static function createDeal($to_status$params$new_balance$update = true) 
  2.   { 
  3.     \DB::beginTransaction(); 
  4.    
  5.    
  6.     try { 
  7.       $update_order_status = \DB::table('wallet_order'
  8.                   ->where('order_id'$params['order_id']) 
  9.                   ->update(['to_status' => $to_status'update_time' => $params['pay_time']]); 
  10.       if (!$update_order_status) { 
  11.         throw new \Exception("update order error"); 
  12.       } 
  13.    
  14.    
  15.       $create_deal_status = \DB::table('wallet_deal'
  16.                   ->insert($params); 
  17.       if (!$create_deal_status) { 
  18.         throw new \Exception("create deal error"); 
  19.           
  20.       } 
  21.    
  22.    
  23.       if ($update) {         
  24.         $update_manage_status = self::updateManage(['balance' => $new_balance'update_time' => $params['pay_time']], $params['from_user']); 
  25.         if (!$update_manage_status) { 
  26.           throw new \Exception("update manage error"); 
  27.         } 
  28.       } else { 
  29.         $manage_params = [ 
  30.           'user_id' => intval($params['from_user']), 
  31.           'balance' => $new_balance
  32.           'add_time' => $params['pay_time'], 
  33.           'update_time' => $params['pay_time'], 
  34.         ]; 
  35.         $create_manage_status = self::createManage($manage_params); 
  36.         if (!$create_manage_status) { 
  37.           throw new \Exception("create manage error"); 
  38.         } 
  39.       } 
  40.       \DB::commit(); 
  41.     } catch (\Exception $e) { 
  42.       //异常处理进行回滚,自己想对应的业务 
  43.     \DB::rollback(); 
  44.     $trouble_params = [ 
  45.       'order_id' => $params['order_id'], 
  46.       'deal_id' => $params['deal_id'], 
  47.       'from_user' => $params['from_user'], 
  48.       'to_user' => $params['to_user'], 
  49.       'total_amount' => $params['total_amount'], 
  50.       'add_time' => $params['pay_time'], 
  51.       'type' => $params['type'], 
  52.       'to_status' => $to_status 
  53.     ]; 
  54.     \DB::connection('mongodb'
  55.       ->table('wallet_trouble'
  56.       ->insert($trouble_params); 
  57.   } finally { 
  58.     self::createLog($params$to_status); 
  59.   } 
  60. }

Tags: laravel事务回滚

分享到: