欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年10月21日 11:37:23   作者:小Z筆記  
今天小編就為大家分享一篇laravel 解決多庫(kù)下的DB::transaction()事務(wù)失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

問(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)文章

最新評(píng)論