我在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",
}
}
我只想更新数量而不更改其他键
答案 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);
}
}
}