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();}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。