1. 程式人生 > >laravel數據庫事務回滾

laravel數據庫事務回滾

laravel 事務回滾 異常

背景:近期使用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();
        }
    }


laravel數據庫事務回滾