主頁 > 知識庫 > laravel 解決多庫下的DB::transaction()事務(wù)失效問題

laravel 解決多庫下的DB::transaction()事務(wù)失效問題

熱門標(biāo)簽:福泉電話機(jī)器人 南寧crm外呼系統(tǒng)平臺 電銷招聘機(jī)器人 天津營銷電話機(jī)器人加盟代理 事業(yè)單位如何百度地圖標(biāo)注 熱線電話機(jī)器人 地圖標(biāo)注入哪個(gè)科目 太原極信防封電銷卡 格陵蘭島地圖標(biāo)注

問題:最近使用laravel的DB::transaction()方法進(jìn)行事務(wù)操作時(shí),發(fā)現(xiàn)事務(wù)總是無效的。代碼如下:

DB::transaction(function () use ($uid, $roleId) {
 RoomUserRole::insert([
  'uid' => $uid,
  'role_id' => $roleId,
  'created_at' => LARAVEL_START,
  'updated_at' => LARAVEL_START
 ]);

 RoomUserRoleLog::insert([
  'uid' => $uid,
  'handle_type' => 1,
  'admin_uid' => Auth::user()->id,
  'created_at' => LARAVEL_START,
  'updated_at' => LARAVEL_START
 ]);

});

以上mysql 第二句會報(bào)錯(cuò)拋出一個(gè)異常, 查看數(shù)據(jù)庫時(shí)第一句依然出入成功。查看laravel的DB::transaction()的使用

原因以及解決方法:

項(xiàng)目使用多個(gè)數(shù)據(jù)庫配置,DB::transaction()使用的是默認(rèn)庫的事務(wù)操作。所以要指定哪個(gè)數(shù)據(jù)庫的事務(wù),以上代碼調(diào)整:

DB::connection('mysql2')->transaction(function () use ($uid, $roleId) {
 RoomUserRole::insert([
  'uid' => $uid,
  'role_id' => $roleId,
  'created_at' => LARAVEL_START,
  'updated_at' => LARAVEL_START
 ]);

 RoomUserRoleLog::insert([
  'uid' => $uid,
  'handle_type' => 1,
  'admin_uid' => Auth::user()->id,
  'created_at' => LARAVEL_START,
  'updated_at' => LARAVEL_START
 ]);

}); // 這樣你會發(fā)現(xiàn)事務(wù)才正常回滾

同樣

DB::connection('mysql_chat_room')->beginTransaction();
DB::connection('mysql_chat_room')->commit();
DB::connection('mysql_chat_room')->rollBack(); // 指定庫,不然都會跑默認(rèn)配置庫的事務(wù)

以上這篇laravel 解決多庫下的DB::transaction()事務(wù)失效問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • laravel5 Eloquent 實(shí)現(xiàn)事務(wù)方式
  • 在laravel中實(shí)現(xiàn)事務(wù)回滾的方法
  • laravel Model 執(zhí)行事務(wù)的實(shí)現(xiàn)

標(biāo)簽:自貢 佳木斯 香港 郴州 寶雞 金華 通化 阿克蘇

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