这样使用悲观锁for update有用吗 
                            
                                                    
                        
                    
                    
  
                    
                    DB::beginTransaction();
            try {
                $workorderModel = new Workorder();
                $exists = $workorderModel->where('order_id', $order->id)->where('status', 'action')->forUpdate()->exists();
                if ($exists > 0) {
                    throw new InvalidRequestException('该订单存在未处理工单(收到工单),请先撤销');
                }
                $receiver_user_id = $order->seller_user_id;
                Workorder::create([
                    'order_id'         => $order->id,
                    'task_sn'          => $order->task_sn,
                    'order_status'     => $order->status,
                    'sender_user_id'   => Auth::user()->id,
                    'sender_user_type' => Auth::user()->type,
                    'receiver_user_id' => $receiver_user_id,
                    'enum'         => $request->enum,
                    'description'  => $request->description,
                    'picture'      => $request->picture,
                ]);
                DB::commit();
            }catch (\Exception $e) {
                DB::rollBack();
                throw $e;
            }之前都是用于->first()里面
这个用于exits不知道会不会等待,没用锁的话,系统卡的时候还是会导致重复提交
 
           
         
                     
                     
             
             
             
         
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: