我正在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文档,但没有得到任何方法来解决我的问题。
答案 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);
}