class ControlController extends Controller
{
public function anyadirCarrito($id, $quan) {
$productoCarrito = (object)array(
'id' =>$id,
'cantidad' => $quan,
);
\Session::push('cart', $productoCarrito);
return \Session::get('cart');
}
}
我试图调用此函数来存储数据,但每次调用它时,它都会覆盖数据,我希望它将它存储在另一个数据旁边,但它会覆盖它。如何将其与另一个存储?如果我给他一个身份证,我怎么能删除它?
答案 0 :(得分:2)
Laravel Session
以关键/价值为基础运作。因此,当您push
另一个项目到密钥cart
时,您将覆盖推送上一个值的相同密钥。
如果您希望维护cart
,并添加了所有已添加的产品,则首先需要检索该值,然后附加新产品。例如:
public function addProduct($id, $quantity) {
// Get cart from session
$cart = session('cart', []);
// Increment existing product quantity, or add product to cart
if (array_key_exists($id, $cart)) {
$cart[$id]->quantity += $quantity;
} else {
$cart[$id] = (object) compact('id', 'quantity');
}
// Set cart in session
session(compact('cart'));
return $cart;
}
public function removeProduct($id) {
// Get cart from session
$cart = session('cart', []);
// Remove product from cart
unset($cart[$id]);
// Set cart in session
session(compact('cart'));
return $cart;
}