laravel 解決多庫(kù)下的DB::transaction()事務(wù)失效問(wèn)題
問(wèn)題:最近使用laravel的DB::transaction()方法進(jìn)行事務(wù)操作時(shí),發(fā)現(xiàn)事務(wù)總是無(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 第二句會(huì)報(bào)錯(cuò)拋出一個(gè)異常, 查看數(shù)據(jù)庫(kù)時(shí)第一句依然出入成功。查看laravel的DB::transaction()的使用
原因以及解決方法:
項(xiàng)目使用多個(gè)數(shù)據(jù)庫(kù)配置,DB::transaction()使用的是默認(rèn)庫(kù)的事務(wù)操作。所以要指定哪個(gè)數(shù)據(jù)庫(kù)的事務(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 ]); }); // 這樣你會(huì)發(fā)現(xiàn)事務(wù)才正常回滾
同樣
DB::connection('mysql_chat_room')->beginTransaction(); DB::connection('mysql_chat_room')->commit(); DB::connection('mysql_chat_room')->rollBack(); // 指定庫(kù),不然都會(huì)跑默認(rèn)配置庫(kù)的事務(wù)
以上這篇laravel 解決多庫(kù)下的DB::transaction()事務(wù)失效問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ZendFramework框架實(shí)現(xiàn)連接兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了ZendFramework框架實(shí)現(xiàn)連接兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)的方法,涉及ZendFramework框架配置文件與數(shù)據(jù)庫(kù)操作相關(guān)技巧,需要的朋友可以參考下2016-12-12四種php中webservice實(shí)現(xiàn)的簡(jiǎn)單架構(gòu)方法及實(shí)例
這篇文章主要介紹了四種php中webservice實(shí)現(xiàn)的簡(jiǎn)單架構(gòu)方法及實(shí)例,需要的朋友可以參考下2015-02-02thinkphp5使html5實(shí)現(xiàn)動(dòng)態(tài)跳轉(zhuǎn)的例子
今天小編就為大家分享一篇thinkphp5使html5實(shí)現(xiàn)動(dòng)態(tài)跳轉(zhuǎn)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP超全局?jǐn)?shù)組(Superglobals)介紹
這篇文章主要介紹了PHP超全局?jǐn)?shù)組(Superglobals)介紹,本文講解了概述、變量的作用域、超全局?jǐn)?shù)組及注意事項(xiàng)等內(nèi)容,需要的朋友可以參考下2015-07-07PHP實(shí)現(xiàn)163郵箱自動(dòng)發(fā)送郵件
163郵箱實(shí)用性非常高。那么基于php如何實(shí)現(xiàn)163郵箱自動(dòng)發(fā)送郵件功能呢,下面腳本之家小編給大家分享具體實(shí)現(xiàn)代碼2016-03-03PHP使用流包裝器實(shí)現(xiàn)WebShell的方法
這篇文章主要介紹了PHP使用流包裝器實(shí)現(xiàn)WebShell的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07