如何在会话laravel 5.6中简单地存储多数组

时间:2018-07-11 10:01:07

标签: php laravel

我将一个数组存储到session('cart')中,最后单击[add to cart],当我在session('cart')中添加另一个数组时,但是它存储了一个数组,则session无法保存两个数组。 救救我!

public function addtocart(Request $req,$id){

  $product = _prod::find($id)->toArray();
  $item = [
         'name' => $product['pName'],
         'description' => $product['pDesc'],
         'price' => $product['pPrice'],
         ];

  $cart = [
          'qtyTotal' => 0,
          'priceTotal' => 0,
          'item' => [$item]
         ];

   $req->session()->put('cart',$cart);
   $a = session()->get('cart');

}

3 个答案:

答案 0 :(得分:1)

更改此

    $req->session()->put('cart',$cart);
    $a = session()->get('cart');
    dd($a);

对此:

    $cartvalues[] = $cart;
    $req->session()->put('cart',$cartvalues);
    $a = session('cart');
    dd($a);

因为您一直覆盖会话购物车中的先前值

答案 1 :(得分:0)

在这里,您每次添加新项目时都会覆盖会话中的cart变量。因此,将购物车商品存储为数组并将商品添加到数组。代码应为:

public function addtocart(Request $req, $id) {
    $product = _prod::find($id)->toArray();
    $item = [
        'name' => $product['pName'],
        'description' => $product['pDesc'],
        'price' => $product['pPrice'],
    ];

    $cart = [
        'qtyTotal' => 0,
        'priceTotal' => 0,
        'item' => [$item]
    ];

    $cartItems = session()->get('cart');
    if (empty($cartItems)) {
        $cartItems = [];
    }
    $cartItems[] = $cart;
    $req->session()->put('cart', $cartItems);
    return view($cartItems);
}

答案 2 :(得分:0)

这是根据您的情况更新购物车的简单示例

`     公共功能addtocart(Request $ req,$ id){         //返回redirect('Resouce / product');

    $product = _prod::find($id)->toArray();
    $item = [
        'name' => $product['pName'],
        'description' => $product['pDesc'],
        'price' => $product['pPrice'],
    ];
    if($req->session()->has('cart')){
        $oldCart = $req->session()->get('cart');
        $newCart = [
            'qtyTotal' => 0,
            'priceTotal' => 0,
            'item' => array_merge($item,$oldCart['item'])
        ];
        $req->session()->put('cart',$newCart);
    }

    $cart = [
        'qtyTotal' => 0,
        'priceTotal' => 0,
        'item' => [$item]
    ];


    $req->session()->put('cart',$cart);
    $a = session()->get('cart');
    dd($a);
}`