校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 在laravel中實現事務回滾的方法

在laravel中實現事務回滾的方法

熱門標簽:銅川電話機器人價格 辦理重慶400電話 聊城電話外呼系統公司 德陽中江如何申請400開頭電話 智能電話機器人好公司門薩維 江蘇電商外呼系統運營商 AI電話機器人OEM貼牌 沛縣400電話辦理 青白江地圖標注

之前做項目用到了事務回滾這個機制。我把代碼貼出來多多交流給點意見,我用的是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中實現事務回滾的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • laravel5 Eloquent 實現事務方式
  • laravel Model 執行事務的實現
  • laravel 解決多庫下的DB::transaction()事務失效問題

標簽:南寧 濟寧 赤峰 鷹潭 烏魯木齊 迪慶 山南 三亞

巨人網絡通訊聲明:本文標題《在laravel中實現事務回滾的方法》,本文關鍵詞  在,laravel,中,實現,事務,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在laravel中實現事務回滾的方法》相關的同類信息!
  • 本頁收集關于在laravel中實現事務回滾的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 云和县| 石棉县| 滦平县| 博客| 灵璧县| 宁陵县| 泰顺县| 遵义市| 昌乐县| 武夷山市| 奎屯市| 中山市| 湛江市| 苍溪县| 刚察县| 镇坪县| 永仁县| 大悟县| 华安县| 白河县| 安平县| 堆龙德庆县| 修文县| 榆社县| 临城县| 灌阳县| 龙井市| 东城区| 垦利县| 莲花县| 图们市| 乌拉特中旗| 江西省| 宁安市| 沙湾县| 大丰市| 新乐市| 祁东县| 城固县| 磴口县| 萨嘎县|