濮阳杆衣贸易有限公司

主頁 > 知識庫 > 在laravel中實現(xiàn)事務回滾的方法

在laravel中實現(xiàn)事務回滾的方法

熱門標簽:銅川電話機器人價格 辦理重慶400電話 聊城電話外呼系統(tǒng)公司 德陽中江如何申請400開頭電話 智能電話機器人好公司門薩維 江蘇電商外呼系統(tǒng)運營商 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) {
		//異常處理進行回滾,自己想對應的業(yè)務
      \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中實現(xiàn)事務回滾的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

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

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

巨人網(wǎng)絡通訊聲明:本文標題《在laravel中實現(xiàn)事務回滾的方法》,本文關鍵詞  在,laravel,中,實現(xiàn),事務,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在laravel中實現(xiàn)事務回滾的方法》相關的同類信息!
  • 本頁收集關于在laravel中實現(xiàn)事務回滾的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    丰宁| 凤阳县| 左贡县| 津市市| 万载县| 南安市| 治县。| 红桥区| 洛浦县| 安福县| 大城县| 五台县| 乐都县| 宁河县| 通海县| 邹城市| 广昌县| 福海县| 恩施市| 吉隆县| 和顺县| 如东县| 海盐县| 桓台县| 石泉县| 永年县| 安溪县| 宁津县| 南木林县| 东乌珠穆沁旗| 桐梓县| 洛川县| 绥江县| 普格县| 梧州市| 淮安市| 屯留县| 上思县| 邯郸县| 调兵山市| 丁青县|