Laravel - 如何在laravel会话中更新数组值?

时间:2017-01-25 11:46:06

标签: php arrays session laravel-5 laravel-5.3

我正在laravel 5.3中创建购物车功能。当用户将产品添加到购物车时,它基本上是创建会话并将产品添加到该会话。

让我们从我正在工作的例子开始。

当用户将产品添加到购物车时,我将所需参数传递给控制器​​功能,然后将其存储在会话中。所以我的控制器功能是:

public function add_cart(Request $request){


    $product = [
        'sku' => $request['sku'],
        'price' => $request['price'],
        'quantity' => $request['quantity'],
        'brand_id' => $request['brand_id'],
        'brand_name' => $request['brand_name'],
        'brand_img' => $request['brand_img']
    ];

   // dd($product);
    if($request->session()->has('add_to_cart')){
        $request->session()->push('add_to_cart', $product);
    }else{
        $request->session()->push('add_to_cart', $product);
    }


    return count($request->session()->get('add_to_cart'));

}

所以在将产品添加到 add_to_cart 会话后,我的会话看起来像这样:

array:2 [▼
0 => array:6 [▼
"sku" => ""
"price" => " "
"quantity" => "1"
"brand_id" => "14"
"brand_name" => "The Body Shop"
"brand_img" => "http://s3.giftcardsindia.in/2015/06/01/original-556c623c560f5.jpg"
 ]
1 => array:6 [▼
"sku" => "ffs002000"
"price" => "2000"
"quantity" => "1"
"brand_id" => "47"
"brand_name" => "The Four Fountains Spa"
"brand_img" => "http://s3.giftcardsindia.in/2015/06/01/original-556c47b5a27eb.jpg"
]
]

使用此功能,我可以在购物车页面中显示所有购物车产品,也可以使用小计,税金和支付功能。

现在的问题是,如果我想更新 brand_id的数量:14 我怎么能从brand_id为14的会话中获得产品数组?在确定该产品数组之后,如何仅更新该数组中的数量值?或者我们可以用新的替换整个产品阵列,但如何从会话中找到该产品阵列?

不知道。我搜索laravel文档,但没有得到任何方法来解决我的问题。

1 个答案:

答案 0 :(得分:1)

没有直接的方法,您可以创建一个简单的函数来为您更新会话..

这是一个例子。

public function updateQuantityByBrand($brand_id, $quantity){
   $cartItems = session()->get('add_to_cart');

   foreach($cartItems as $item){
      if($item["brand_id"] == $brand_id){
          $item["quantity"] = $quantity;
      }
   }

   return session("add_to_cart", $cartItems);
}