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('申請異常,請聯系管理員');
// }
