Php 如何在会话laravel 5.6中简单存储多个阵列
我在会话(“购物车”)中存储了一个数组,上次单击[添加到购物车],当我在会话(“购物车”)中添加另一个数组时,它存储了一个数组,然后会话无法同时保存这两个数组。 救救我Php 如何在会话laravel 5.6中简单存储多个阵列,php,laravel,Php,Laravel,我在会话(“购物车”)中存储了一个数组,上次单击[添加到购物车],当我在会话(“购物车”)中添加另一个数组时,它存储了一个数组,然后会话无法同时保存这两个数组。 救救我 public function addtocart(Request $req,$id){ $product = _prod::find($id)->toArray(); $item = [ 'name' => $product['pName'], 'description
public function addtocart(Request $req,$id){
$product = _prod::find($id)->toArray();
$item = [
'name' => $product['pName'],
'description' => $product['pDesc'],
'price' => $product['pPrice'],
];
$cart = [
'qtyTotal' => 0,
'priceTotal' => 0,
'item' => [$item]
];
$req->session()->put('cart',$cart);
$a = session()->get('cart');
}
在这里,每次添加新项目时,您都会在会话中覆盖
购物车变量。所以,将购物车项目存储为数组,并将项目添加到数组中。代码应为:
public function addtocart(Request $req, $id) {
$product = _prod::find($id)->toArray();
$item = [
'name' => $product['pName'],
'description' => $product['pDesc'],
'price' => $product['pPrice'],
];
$cart = [
'qtyTotal' => 0,
'priceTotal' => 0,
'item' => [$item]
];
$cartItems = session()->get('cart');
if (empty($cartItems)) {
$cartItems = [];
}
$cartItems[] = $cart;
$req->session()->put('cart', $cartItems);
return view($cartItems);
}
改变这个
$req->session()->put('cart',$cart);
$a = session()->get('cart');
dd($a);
为此:
$cartvalues[] = $cart;
$req->session()->put('cart',$cartvalues);
$a = session('cart');
dd($a);
因为您一直在覆盖会话购物车中的上一个值,所以这里有一个简单的例子来更新您的购物车
`
公共函数addtocart(请求$req,$id){
//返回重定向(“资源/产品”)
$product = _prod::find($id)->toArray();
$item = [
'name' => $product['pName'],
'description' => $product['pDesc'],
'price' => $product['pPrice'],
];
if($req->session()->has('cart')){
$oldCart = $req->session()->get('cart');
$newCart = [
'qtyTotal' => 0,
'priceTotal' => 0,
'item' => array_merge($item,$oldCart['item'])
];
$req->session()->put('cart',$newCart);
}
$cart = [
'qtyTotal' => 0,
'priceTotal' => 0,
'item' => [$item]
];
$req->session()->put('cart',$cart);
$a = session()->get('cart');
dd($a);
}`