首页 > 解决方案 > 如何不更新更新函数的值?

问题描述

如果用户调用更新路由代码,我希望不运行此代码

if($getDistanceValue * 1000 > 300){
        if($chk_ord == 0)
        {
        $order->chk_ord_vst = 1;
        }
        elseif($chk_ord != 0){
        $order->chk_ord_vst = $chk_ord + 1;
        }
        }
        elseif($getDistanceValue * 1000 <= 300 ){
            if($chk_ord >= 4){
             $order->chk_ord_vst = 2;
            }
            elseif($chk_ord == 3){
             $order->chk_ord_vst = 2;
            }
            elseif($chk_ord == 2){
             $order->chk_ord_vst = 1;
            }
            elseif($chk_ord <= 1){
             $order->chk_ord_vst = 0;
            }   
        }

我正在使用相同的功能来更新或存储订单但是在更新时我不想运行上面的代码我知道这很简单但我是一名学生并且在这里学习帮助我这是控制器功能首先用户创建订单如果想要更新然后我们使用get函数将值传递给编辑视图,然后再次传递给存储函数

public function storeOrder(Request $request , $update = null , $customer_id){

    $order = !is_null($update) ? Order::find($update) : new Order();
    
    $cus_det = explode("-", $request->customer_id);

    $tt_amount = array_sum($request->amount) + $request->old_balance;
    if(is_null ($update))
    $balance = $tt_amount + $request->old_balance;
   
    $auth_id = Auth::id();
    if(Auth::user()->role == 4){
        $auth_id = Customer::where('user_id', $auth_id)->first()->created_by;
    }

    $order->customer_id = $cus_det[0];
    $order->user_id = Auth::id();
    $order->ot_id = !is_null($update) ? $order->ot_id : $auth_id;
    $order->unit = array_sum($request->unit);
    $order->amount = $tt_amount;
    $order->subtotal = array_sum($request->amount);
    $order->order_comments  = $request->order_comments;
    
    if( Auth::user()->role == 5){
        $order->location_url_ot = $request->location_url_ot;
    $order->received_amount = 0;
    }
    else{
        $order->received_amount = $request->received_amount;
        
    }
    $order->discount = $request->discount;
    $order->order_date= date('Y/m/d', strtotime($request->order_date));
    if($tt_amount >= $request->received_amount){
        $order->amount_left = ($tt_amount -  $request->received_amount - $request->discount);
    }
    else{
        $order->advance = $request->received_amount - $tt_amount;
        $order->amount_left = $request->old_balance -  $request->received_amount - $request->discount;
    }
    
    $checkB = $this->checkMinBalance($cus_det[0] , $order->amount_left);
    if($checkB){
        return redirect()->back()->with('error' , 'Customer Balance Limit Exceeded ( Limit is '.$checkB.' )');
    }
    if($request->has('important')){
        $order->is_important=1;
    }
    
     if($request->has('urgent')){
        $order->urgent = urgent ;
    }
    $getothomDistanceValue = ($this->getothomDistance($order) * 1.37);
    
    $getDistanceValue = ($this->getDistance($order) * 1.37);
    
    
    $old_order = Order::where('customer_id' , $order->customer_id)->orderBy('id' , 'desc')->get();
      $chk_ord = $old_order[0]->chk_ord_vst; 

    if($getDistanceValue * 1000 > 300){
        if($chk_ord == 0)
        {
        $order->chk_ord_vst = 1;
        }
        elseif($chk_ord != 0){
        $order->chk_ord_vst = $chk_ord + 1;
        }
        }
        elseif($getDistanceValue * 1000 <= 300 ){
            if($chk_ord >= 4){
             $order->chk_ord_vst = 2;
            }
            elseif($chk_ord == 3){
             $order->chk_ord_vst = 2;
            }
            elseif($chk_ord == 2){
             $order->chk_ord_vst = 1;
            }
            elseif($chk_ord <= 1){
             $order->chk_ord_vst = 0;
            }
            
            
        }

    $order->save();

}

标签: phplaravellaravel-5

解决方案


我从您的问题中得到的是您使用相同的storeOrder功能来存储和更新订单。当您使用它进行更新时,您需要来自 $request->id 的 id 或来自前端的任何其他参数,以便您可以找到该特定订单,然后调用 update()。如果你得到 $id,你可以检查订单是否存在,如下所示:

$order_exists = Order::find($request->id);
if(!isset($order_exists))
{
    if($getDistanceValue * 1000 > 300){
    if($chk_ord == 0)
    {
    $order->chk_ord_vst = 1;
    }
    elseif($chk_ord != 0){
    $order->chk_ord_vst = $chk_ord + 1;
    }
    }
    elseif($getDistanceValue * 1000 <= 300 ){
        if($chk_ord >= 4){
         $order->chk_ord_vst = 2;
        }
        elseif($chk_ord == 3){
         $order->chk_ord_vst = 2;
        }
        elseif($chk_ord == 2){
         $order->chk_ord_vst = 1;
        }
        elseif($chk_ord <= 1){
         $order->chk_ord_vst = 0;
        }   
    }
}

// 然后 $order->save() 完成后


推荐阅读