在laravel中实现事务回滚的方法
之前做项目用到了事务回滚这个机制。我把代码贴出来多多交流给点意见,我用的是laravel5.1bane版本的,
publicstaticfunctioncreateDeal($to_status,$params,$new_balance,$update=true) { \DB::beginTransaction(); try{ $update_order_status=\DB::table('wallet_order') ->where('order_id',$params['order_id']) ->update(['to_status'=>$to_status,'update_time'=>$params['pay_time']]); if(!$update_order_status){ thrownew\Exception("updateordererror"); } $create_deal_status=\DB::table('wallet_deal') ->insert($params); if(!$create_deal_status){ thrownew\Exception("createdealerror"); } if($update){ $update_manage_status=self::updateManage(['balance'=>$new_balance,'update_time'=>$params['pay_time']],$params['from_user']); if(!$update_manage_status){ thrownew\Exception("updatemanageerror"); } }else{ $manage_params=[ 'user_id'=>intval($params['from_user']), 'balance'=>$new_balance, 'add_time'=>$params['pay_time'], 'update_time'=>$params['pay_time'], ]; $create_manage_status=self::createManage($manage_params); if(!$create_manage_status){ thrownew\Exception("createmanageerror"); } } \DB::commit(); }catch(\Exception$e){
//异常处理进行回滚,自己想对应的业务 \DB::rollback(); $trouble_params=[ 'order_id'=>$params['order_id'], 'deal_id'=>$params['deal_id'], 'from_user'=>$params['from_user'], 'to_user'=>$params['to_user'], 'total_amount'=>$params['total_amount'], 'add_time'=>$params['pay_time'], 'type'=>$params['type'], 'to_status'=>$to_status ]; \DB::connection('mongodb') ->table('wallet_trouble') ->insert($trouble_params); }finally{ self::createLog($params,$to_status); } }
以上这篇在laravel中实现事务回滚的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。