Обновить элемент объекта Session Laravel - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть сеанс корзины в 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 голосов
/ 12 декабря 2018

Это потому, что $update_cart не содержит никаких других значений, но 'количество' .

Попробуйте что-то вроде этого:

$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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...