在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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。