使用Laravel会话添加到购物车

时间:2019-09-18 13:41:23

标签: php laravel

我正在使用laravel会话在网络浏览器上存储购物车信息,但是在测试时却收到此错误“试图获取非对象的属性”。有什么见解吗?第一个代码段是控制器,然后是我的模型。我正在使用两个foreach来检索产品信息,然后以模态显示它们,用户现在可以将其添加到购物车中。

    public function addtoCart(Request $request, $id){
        $product = Product::find($id);

        $oldCart = Session::has('cart') ? Session::get('cart') : null;
        $cart = new Cart($oldCart);
        $cart->add($product, $product->$id);
        $request->session()->put('cart', $cart);
        dd($request->session()->get('cart'));
        return redirect()->back()->with('flash_message_success', 'Added Successfully');
    }

<?php

namespace App;

class Cart 
{

    public $items = null;
    public $totalQty = 0;
    public $totalprice = 0;

    public function _construct($oldCart){

        if ($oldCart) {
            $this->items = $oldCart->items;         
            $this->totalQty = $oldCart->totalQty;           
            $this->totalprice = $oldCart->totalprice;           
        }
    }

    public function add($item,$id){
        $storedItem = ['qty'=>0, 'price' =>$item->price, 'item' ->$item->item];

        if ($this->items) {
            if (array_key_exists($id,$this->items)) {
                $storedItem = $this->items[$id];
            }
        }
        $storedItem['qty']++;
        $storedItem['price'] = $item->price * $storedItem['qty'];
        $this->items[$id] = $storedItem; 
        $this->totalQty++;
        $this->totalprice += $item->price; 
    }
}

1 个答案:

答案 0 :(得分:0)

Product :: find($ id),您的表中可能不存在传递的ID。确保通过实际记录。