1、不废话,直接上代码:
// 启动事务
Db::startTrans();
try{
Db::name('student')->lock(true)->where(['sno'=>session('user')['user_login']])->update(['graduation'=>1]);
Db::name('student_unit')->lock(true)->where(['sno'=>session('user')['user_login']])->update(['unit_company'=>$param['unit_company'],'status'=>1,'remark'=>'学生申请','update_time'=>time()]);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
$this->error('申请异常,请稍后重试或联系管理员');
}
$this->success('您的申请已提交成功,请等待管理员审核');
2、如果有查询,也需要带上lock(true),跟TP3.2的用法一致
3、附上另一种事物处理方式:
// 方式2:根据操作的返回值判断是否成功
//启动事务
// Db::startTrans();
// $result = Db::name('student')->where(['sno'=>session('user')['user_login']])->update(['graduation'=>1]);
// $result2 = Db::name('student_unit')->where(['sno'=>session('user')['user_login']])->update(['unit_company'=>$param['unit_company'],'status'=>1,'remark'=>'学生申请','update_time'=>time()]);
// if($request && $result2){
// Db::commit();
// $this->success('您的申请已提交成功,请等待管理员审核');
// }else{
// Db::rollback();
// $this->error('申请异常,请联系管理员');
// }
