主頁(yè) > 知識(shí)庫(kù) > 在laravel中實(shí)現(xiàn)事務(wù)回滾的方法

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

熱門標(biāo)簽:銅川電話機(jī)器人價(jià)格 辦理重慶400電話 聊城電話外呼系統(tǒng)公司 德陽(yáng)中江如何申請(qǐng)400開(kāi)頭電話 智能電話機(jī)器人好公司門薩維 江蘇電商外呼系統(tǒng)運(yùn)營(yíng)商 AI電話機(jī)器人OEM貼牌 沛縣400電話辦理 青白江地圖標(biāo)注

之前做項(xiàng)目用到了事務(wù)回滾這個(gè)機(jī)制。我把代碼貼出來(lái)多多交流給點(diǎn)意見(jiàn),我用的是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) {
		//異常處理進(jìn)行回滾,自己想對(duì)應(yīng)的業(yè)務(wù)
      \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中實(shí)現(xiàn)事務(wù)回滾的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

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

標(biāo)簽:南寧 濟(jì)寧 赤峰 鷹潭 烏魯木齊 迪慶 山南 三亞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在laravel中實(shí)現(xiàn)事務(wù)回滾的方法》,本文關(guān)鍵詞  在,laravel,中,實(shí)現(xiàn),事務(wù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在laravel中實(shí)現(xiàn)事務(wù)回滾的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于在laravel中實(shí)現(xiàn)事務(wù)回滾的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章