在实时项目中从空值创建默认对象

时间:2018-01-23 07:08:07

标签: php laravel laravel-5

我正在尝试使用其ID来查找数据库中的更新传递值。我对两个数据库使用相同的逻辑,它在localhost中正常工作,但在实时项目中它给出了错误:

  

ErrorException从空值创建默认对象

Controller.php这样

    <form action="{{route('toggle.deliver',$order->id)}}" method="POST" class="pull-right">
        {{csrf_field()}}
        <label for="delivered">Delivered</label>
        <input type="checkbox" value="1" name="delivered" {{$order->delivered==1?"checked":""}}>
        <input type="submit" value="Submit">
    </form>

orders.blade.php

{{1}}

5 个答案:

答案 0 :(得分:1)

似乎您尝试使用address抓取orderId。检查$address$order是否为空。

public function toggledeliver(Request $request,$orderId){

       $address=Address::find($orderId);

       if($address!=null) {
           if($request->has('delivered')){
               $address->delivered=$request->delivered;
           }else{
               $address->delivered="0";
           }

          $address->save();
       }

        $order=Order::find($orderId);

        if($order!=null) {
             if($request->has('delivered')){
                 $order->delivered=$request->delivered;
             }else{
                 $order->delivered="0";
             }

            $order->save();
        }

       return back();
   }
}

尝试更改此行 -

$address=Address::find($orderId);

收件人(假设order_id表中有Address列) -

$address=Address::where("order_id",$orderId)->first();

答案 1 :(得分:0)

问题是$address= Address::find($orderId);会返回NULL。添加支票:

if(!is_null($address) {
   //redirect or show an error message    
}else{
   dd($address);
}

答案 2 :(得分:0)

问题是$order=Order::find($orderId);会返回null

添加支票:

  if(!is_null($address)) {
   $address=Address::find($orderId);
    if($request->has('delivered')){
        $address->delivered=$request->delivered;
    }else{
        $address->delivered="0";
    }

    $address->save();
    } else {
    //order_id was null, 
   //do stuff
     }

    if(!is_null($order)) {
            if($request->has('delivered')){
                $order->delivered=$request->delivered;
            }else{
                $order->delivered="0";
            }

            $order->save();

            return back();
    } else {
    //order_id was null, 
   //do stuff
     }

答案 3 :(得分:0)

这意味着ID = $orderId没有地址。您可以添加支票:

if (empty($address))

此外,如果您想要创建新地址,则可以使用findOrNew()

$address = Address::findOrNew($orderId);

如果您想按订单ID查找地址,则应使用关系:

$address = Order::find($orderId)->address

答案 4 :(得分:0)

似乎具有给定ID的地址在数据库中不存在。您可以使用 findOrFail 方法。如果没有找到数据,此方法将抛出404 - 未找到的异常。

   let myString = "43321 This is example hahaha 4356-13"
              let stringToReplace = "43321"
              let outputStr = myString.replacingOccurrences(of: stringToReplace, with: "")
             print(outputStr.trimmingCharacters(in: NSCharacterSet.whitespaces))

//output: This is example hahaha 4356-13

或者

您可以检查结果数组是否为空。

$model = App\Flight::findOrFail(1);