购物车为空时总是出错,Laravel 5

Always getting error when cart is empty, Laravel 5

遇到这个错误:

ErrorException in CartController.php line 35: Trying to get property of non-object

这是代码:

public function index()
    {
        $this->data['details'] = Cart::content();

        $this->data['shipping'] = Shipping::where('region_category_id',session('location'))->where('type',session('type_komoditi'))->first();

        $regType = session('regType');

        $regId = session('id_wilayah');
        $qReg = RegionCategory::find($regId);
        if($regType == 'children') {
          $this->data['minimalWeight'] = $qReg->minimal_weight;
          //$this->data['minimalBuy'] = $qReg->min_buy;

        }
        $this->data['minimalBuy'] = $qReg->min_buy; //this is line 35
        $this->data['regType'] = $regType;

        \Session::put('price',Cart::total());
        \Session::put('totalPrice',Cart::total());
        \Session::put('paycode',0);

        return view('client.carts.index',$this->data);
    }

当我删除第 35 行时,错误消失了,但该代码对于使用最小购买过滤器很重要。 如何解决这个错误?

这是说 $qReg 不是一个对象,您正在尝试使用 min_buy 属性.

从中获取值

尝试使用 print_r($qReg); 打印对象 $qReg,然后退出脚本。

print_r($qReg);
exit();

并检查该对象是否具有 属性 min_buy

为什么 $this->data['minimalBuy'] = $qReg->min_buy; 在 if 块之后?即使 if($regType == 'children') 为假,它也会被覆盖。

这是错误原因 $qReg->min_buy return 无效。 您可以通过 return 默认值修复,如下所示:

$this->data['minimalBuy'] = $qReg->min_buy ?? 0;

这意味着如果是 null return 0