更新会话对象项Laravel

时间:2018-12-12 09:54:32

标签: php laravel session

我在laravel中有一个购物车会话,如下所示:

{
  "5c10d896edd57": {
    "quantity": "3",
    "price": "20.0",
    "dishId": "39508",
  },
  "5c10d8b55f34e": {
    "quantity": "3",
    "price": "389.0",
    "dishId": "39510",
  }
}

如果再次添加相同的 dishId ,我想更新数量 为此,我编写了这段代码

$previous_cartData = session('cart');
if(!empty($previous_cartData)){
    foreach ($previous_cartData as $key => $p_cart) {
        if($p_cart->dishId == $cart->dishId){
            $update_cart['quantity']= $p_cart->dishId+$cart->quantity;
            $request->session()->put('cart.'.$key, $update_cart);
        }else{
            $request->session()->put('cart.'.uniqid(), $cart);
        }
    }
}

但是不幸的是,它像这样替换了整个对象:

{
  "5c10d896edd57": {
    "quantity": "4"
  },
  "5c10d8b55f34e": {
    "quantity": "3",
    "price": "389.0",
    "dishId": "39510",
  }
}

我只想更新数量而不更改其他键

1 个答案:

答案 0 :(得分:1)

那是因为$update_cart除了'quantity' 之外没有其他任何值。

尝试这样的事情:

$previous_cartData = session('cart');
if(!empty($previous_cartData)){
    foreach ($previous_cartData as $key => $p_cart) {
        if($p_cart->dishId == $cart->dishId){
            $update_cart = $p_cart;
            $update_cart['quantity']= $p_cart->dishId+$cart->quantity;
            $request->session()->put('cart.'.$key, $update_cart);
        }else{
            $request->session()->put('cart.'.uniqid(), $cart);
        }
    }
}