php - 购物车对所有用户都一样 Laravel
问题描述
我正在使用 laravel 开展一个项目,我希望每个用户都有自己的购物车,这意味着如果用户将商品添加到购物车、删除或更新它应该只显示在他的帐户中而不会影响其他用户。目前,当用户添加或删除项目时,它会显示在所有用户中。
我尝试了其他来源的一些解决方案,但没有奏效。
产品控制器.php
public function cart()
{
return view('cart');
}
public function addToCart($id)
{
$userId = Auth::user()->id;
$products = products_model::where('user_id', $userId)->find($id);
if(!$products) {
abort(404);
}
$cart = session()->get('cart');
// if cart is empty then this the first product
if(!$cart) {
$cart = [
$id => [
"pro_name" => $products->pro_name,
"quantity" => 1,
"pro_price" => $products->pro_price,
"image" => $products->image
]
];
session()->put('cart', $cart);
return redirect()->back()
->with('success', 'Product added to cart successfully!');
}
// if cart not empty then check if this product exist then increment quantity
if(isset($cart[$id])) {
$cart[$id]['quantity']++;
session()->put('cart', $cart);
return redirect()->back()
->with('success', 'Product added to cart successfully!');
}
// if item not exist in cart then add to cart with quantity = 1
$cart[$id] = [
"pro_name" => $products->pro_name,
"quantity" => 1,
"pro_price" => $products->pro_price,
"image" => $products->image
];
session()->put('cart', $cart);
return redirect()->back()
->with('success', 'Product added to cart successfully!');
}
public function update(Request $request)
{
if($request->id and $request->quantity)
{
$cart = session()->get('cart');
$cart[$request->id]["quantity"] = $request->quantity;
session()->put('cart', $cart);
session()->flash('success', 'Cart updated successfully');
}
}
public function remove(Request $request)
{
if($request->id) {
$cart = session()->get('cart');
if(isset($cart[$request->id])) {
unset($cart[$request->id]);
session()->put('cart', $cart);
}
session()->flash('success', 'Product removed successfully');
}
}
我试图添加这些行(添加到购物车)但没有用。
$userId = Auth::user()->id;
$products = products_model::where('user_id', $userId)- >find($id);
解决方案
是的,你可以做到。它称为复制。
只需在 Products 表中再添加一个字段,如 userID 并在其上保存用户 ID。
要向所有用户展示产品,只需输入顶部 ID(第一个 ID,可能是系统管理员 ID)
因此,每当您想要显示、编辑、更新或删除时,您只需使用产品 ID 和用户 ID 即可。
希望这会奏效。