您好,登錄后才能下訂單哦!
背景:近期使用Laravel-5.4進行項目開發時涉及到關聯模型的數據操作,想到用事務回滾。中間涉及到數據引用及異常的捕獲。
數據庫事務回滾有兩種方式:自動回滾、手動回滾。
舉例如下:
自動回滾
function(Request $request){ DB::transaction(function () use ($request) { try { $admin = Admin::create(['name' => $request->name, 'password' => encrypt($request->password), 'email' => $request->email]); $admin->roles()->attach($request->role_id); // $admin->roles()->attach('sd');//故意輸入錯誤參數類型,commit失敗 return 'success'; } catch (\Exception $exception) { return $exception->getMessage(); } }); }
需要使用use 引用請求數據$request。否則報錯 "Undefined variable:request"
手動回滾
function(Request $request){ DB::beginTransaction(); try { $admin = Admin::create(['name' => $request->name, 'password' => encrypt($request->password), 'email' => $request->email]); $admin->roles()->attach($request->role_id); DB::commit(); return 'success'; } catch (\Exception $exception) { DB::rollBack(); return $exception->getMessage(); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。