首页 > 解决方案 > laravel 更新会话数组中的值

问题描述

我正在使用 laravel 构建购物车,我想更新会话数组中的数量。

我用过这个链接

如何更新 Laravel 会话数组中的单个值?

但这对我不起作用。

  foreach($request->session()->get('shopping_cart') as $value){
    if($value['code'] == $request->product_id){
        echo $value['code'];
        $value['quantity'] = $request->qty_val;
        echo $value['quantity'].'<br />';
        break;
    }
  }

  dd($request->session()->get('shopping_cart'));

 array:2 [▼
     "" => array:5 [▼
     "name" => "Fiona Nicholson"
     "code" => null
     "price" => "848"
     "quantity" => "1"
     "image" => "product_pics/1566371659.jpeg"
    ]
   "sdfwef" => array:5 [▼
      "name" => "Quentin Bryant"
      "code" => "sdfwef"
      "price" => "713"
      "quantity" => "1"
      "image" => "product_pics/1566371616.jpg"
    ]
   ]

标签: phplaravelsession

解决方案


要更改会话数组中的值,最好使用session()->put()符号而不是通过引用传递,即:

foreach($request->session()->get('shopping_cart') as $key => $value){
    if($value['code'] == $request->product_id){
        $request->session()->put("shopping_cart.$key.quantity", $request->qty_val);
        break;
    }
}

顺便说一句,您可以使用session()帮助程序,如下所示:

foreach(session('shopping_cart') as $key => $value){
    if($value['code'] == $request->product_id){
        session(["shopping_cart.$key.quantity" => $request->qty_val]);
        break;
    }
}

使用带有数组作为参数的助手,与session([$key => $value])使用session()->put($key, $value).


推荐阅读