Корзина на сессиях Laravel

Нужно передать в сессию корзины id + выбранное кол-во. При этом если в сессии есть уже есть id который передаю, нужно ему увеличить qty которое передаю. Делаю вот так, но почему то создаются новые массивы, а на третье добавление получаю ошибку

public function add(Request $request)
    {
        $cart_array = Session::get('products-cart');
        $cart = collect($cart_array);
        if (!$cart->has(['id' => $request->product_id])) {
            $cart->push(['id' => $request->product_id, 'count' => $request->product_qty]);
        }
        else{
            $cart = $cart->map(function(&$item) use ($request) {
                if ($item['id'] === $request->product_id) {
                    $item['count'] += $request->product_qty ?? 1;
                }
                return $item;
            });
        }

        Session::push('products-cart', $cart->toArray());

        return redirect()->back();
    }

Ответы (0 шт):