我正在与laravel合作开发一个项目,我希望每个用户都拥有自己的购物车,这意味着如果用户将商品添加到购物车,删除或更新该商品,则该商品只能显示在其帐户中,而不会影响其他用户。目前,当用户添加或删除项目时,它会在所有用户中显示。
我尝试了其他来源的一些解决方案,但是没有用。
ProductController.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);
答案 0 :(得分:-1)
是的,你可以做。它称为复制。
只需在“产品”表中再添加一个字段(如userID),然后在其中保存用户ID。
要向所有用户展示产品,只需放置顶部ID(第一个ID,可能是系统管理员ID)
因此,每次您要显示,编辑,更新或删除时,只需使用产品ID和用户ID。
希望这会起作用。
答案 1 :(得分:-1)
在Laravel中,您无法将if all(int(digit) % 2 == 0 for digit in s):
与where
结合使用,它将无法工作。最好使用find
,然后使用where
来检索单个模型
first