【tp5】事物和鎖(處理商業類業務,高並發業務)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM