首页 > 解决方案 > 在会话 Laravel 7 中更改变量

问题描述

我想通过一个帖子表单更改我的会话('cart')中的属性“cantidad”,该表单具有输入类型 =“num”,该表单将在会话中更改数量。

但我不能成功地改变它,它什么也没做。

会话代码

$cart = [
        $id => [
            "id" => $product->id,
            "nombre" => $product->nombre,
            "cantidad" => 1,
            "precio" => $product->precio,
            "foto" => $product->imagen1

        ]

尝试更改会话属性

public function updateCart($id , Request $request){

    $cart = session()->get('cart');

    foreach($cart as $index => $product){
        if($product["id"] == $id){
            $producto["cantidad"] = $request->cantidad;
        }
    }

    session()->put('cart' , $cart);
    return view('carrito/carrito');
}

我哪里错了?

抱歉问这个,我是这个jaja的新手

标签: phplaravelsessionupdatescart

解决方案


PHP 中的数组是按值传递的,而不是按引用传递的。换句话说,在您的foreach循环中,您将获得数组的副本

试试这个:

foreach(array_keys($cart) as $index){
    if($cart[$index]["id"] == $id){
        $cart[$index]["cantidad"] = $request->cantidad;
    }
}

或者,您可以使用运算符通过引用传递数组&

foreach($cart as &$product){
    if($product["id"] == $id) {
        $product["cantidad"] = $request->cantidad;
    }
}

推荐阅读