Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何不更新更新函数上的值?_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 如何不更新更新函数上的值?

Php 如何不更新更新函数上的值?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想这个代码不应该运行,如果用户调用upate路由代码 if($getDistanceValue * 1000 > 300){ if($chk_ord == 0) { $order->chk_ord_vst = 1; } elseif($chk_ord != 0){ $order->chk_ord_vst = $chk_ord + 1; } }

我想这个代码不应该运行,如果用户调用upate路由代码

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;
            }   
        }
if($getDistanceValue*1000>300){
如果($chk_ord==0)
{
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord!=0){
$order->chk_ord_vst=$chk_ord+1;
}
}
elseif($getDistanceValue*1000=4){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==3){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==2){
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord chk\U ord\U vst=0;
}   
}
我正在使用相同的功能更新或存储订单,但在更新时我不想运行上述代码我知道这很简单,但我是一名学生,正在学习帮助我这里是控制器功能首先用户创建订单如果要更新,然后我们使用get函数将值传递到编辑视图,然后再次传递到stor函数

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();

}
公共函数storeOrder(请求$Request,$update=null,$customer\u id){
$order=!是否为null($update)?order::find($update):new order();
$cus_det=explode(“-”,$request->customer_id);
$tt\u金额=数组\u金额($request->amount)+$request->old\u余额;
如果(为空($update))
$balance=$tt\U amount+$request->old\U余额;
$auth_id=auth::id();
if(Auth::user()->role==4){
$auth\u id=Customer::where('user\u id',$auth\u id)->first()->创建人;
}
$order->customer\u id=$cus\u det[0];
$order->user_id=Auth::id();
$order->ot\u id=!是否为null($update)?$order->ot\u id:$auth\u id;
$order->unit=array\u sum($request->unit);
$order->amount=$tt\U amount;
$order->subtotal=array\u sum($request->amount);
$order->order\u comments=$request->order\u comments;
if(Auth::user()->role==5){
$order->location\u url\u ot=$request->location\u url\u ot;
$order->received_amount=0;
}
否则{
$order->received_amount=$request->received_amount;
}
$order->折扣=$request->折扣;
$order->order_date=date('Y/m/d',strottime($request->order_date));
如果($tt\u金额>=$request->received\u金额){
$order->amount\u left=($tt\u amount-$request->received\u amount-$request->折扣);
}
否则{
$order->advance=$request->received\u amount-$tt\u amount;
$order->amount\u left=$request->old\u balance-$request->received\u amount-$request->折扣;
}
$checkB=$this->checkMinBalance($cus\u det[0],$order->amount\u left);
如果($checkB){
return redirect()->back()->带有('error','Customer Balance Limit excelled(限额为'$checkB'));
}
如果($request->has('important')){
$order->is_important=1;
}
如果($request->has('urgent')){
$order->EXTANCE=加急;
}
$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;
如果($getDistanceValue*1000>300){
如果($chk_ord==0)
{
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord!=0){
$order->chk_ord_vst=$chk_ord+1;
}
}
elseif($getDistanceValue*1000=4){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==3){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==2){
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord chk\U ord\U vst=0;
}
}
$order->save();
}

一种方法是通过表单传递参数并进行检查

但如果定义了路由名称,还可以执行以下操作:

if(\illumb\Support\Facades\Route::current()->getName()=='orders.create'){
//这里的逻辑
}

<>但是,我必须说,我认为后面的解决方案是一种反模式。

< P>我从你的问题中得到的是,你正在使用相同的<代码>存储顺序< /COD>函数来存储和更新一个订单。 当您使用它进行更新时,您需要$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\u exists=order::find($request->id);
如果(!isset($order_存在))
{
如果($getDistanceValue*1000>300){
如果($chk_ord==0)
{
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord!=0){
$order->chk_ord_vst=$chk_ord+1;
}
}
elseif($getDistanceValue*1000=4){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==3){
$order->chk_ord_vst=2;
}
elseif($chk\U ord==2){
$order->chk\U ord\U vst=1;
}
elseif($chk\U ord chk\U ord\U vst=0;
}   
}
}

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

如果您不希望代码在更新时运行,则不应在更新方法中调用/实现它。发送参数或其他内容以检查您是否正在更新。然后检查该参数或键是否已出现,然后更新其他存储我正在使用相同的函数更新或存储值这都是您控制器的一部分吗?为什么不将该参数或键设置为into是一个单独的服务,您可以对其进行测试,并仅在您想要应用的条件下调用该服务?顺便说一下,我的问题已经解决,但实际上我使用相同的函数来存储和更新thanx值以供贡献