如何在 laravel 会话中增加产品数量

how to increment the quantity of a product in laravel session

我的购物车会话是

Array
(
    [0] => Array
        (
            [id] => 123-XXL
            [prod_name] => Grey Shirt
            [prod_rate] => 2100
            [size] => XXL
            [qty] => 1
            [ind_tot] => 2100
        )

    [1] => Array
        (
            [id] => 134-XL
            [prod_name] => red_shirt
            [prod_rate] => 1800
            [size] => XL
            [qty] => 1
            [ind_tot] => 1800
        )
)

现在我尝试将会话的 qty 值增加 1,

我的增量函数是

public function increment(Request $request){
        $id = $request->id;
        $rate = $request->rate;
        $qty = $request->qty;
        $ind_tot = $request->ind_tot;
        $input = $request->all();
        $qty_up = $qty+1;
        $ind_tot = $ind_tot+$rate;
        if(Session::has('cart_sess')){
            $cart = Session::get('cart_sess');
            foreach ($cart as $key => $value){
                if($cart[$key]['id'] == $id){
                    $cart = $cart->replace([$cart[$key]['qty'] => $qty_up, $cart[$key]['ind_tot'] => $ind_tot]);
                    Session::set('cart_sess', $cart);
                }
            }
        }
        return response()->json($qty_up, 200);
    }

当我控制台时它显示错误为

500 (Internal Server Error)

如何更新 laravel 会话数组中的值。

你可以这样做

public function increment(Request $request){
        $id = $request->id;
        $rate = $request->rate;
        $qty = $request->qty;
        $ind_tot = $request->ind_tot;
        $input = $request->all();
        $qty_up = $qty+1;
        $ind_tot = $ind_tot+$rate;
        if($request->session()->has('cart_sess')){
            $cart = $request->session()->get('cart_sess');
            foreach ($cart as $key => $value){
                if($cart[$key]['id'] == $id){
                    $value['qty'] = $qty_up; 
                    $value['ind_tot'] = $ind_tot;
                }
            }
        }
        $request->session()->put('cart_sess', $cart);
        return response()->json($qty_up, 200);
    }