【发布时间】:2020-02-27 23:53:10
【问题描述】:
我有这个功能,允许用户将产品添加到购物车,但如果产品在管理面板中被删除,它仍然显示在购物车中,关于如何删除已在管理仪表板中删除的购物车中的产品的任何想法?
所以我尝试了这个来检查 id 是否存在,我得到了一个错误Call to a member function isEmpty() on integer
结帐控制器
public function store(Request $request)
{
foreach(session('cart') as $productId =>$item);
$product = product::find($productId);
if(!$productId->isEmpty())
//Insert into orders table
$order = Order::create([
'shipping_email' => $request->email,
'shipping_name' => $request->name,
'shipping_city' => $request->city,
'user_id'=> auth()->user()->id,
]);
//Insert into order product table
if ($order) {
$total = 0;
foreach(session('cart') as $productId =>$item) {
if (empty($item)) {
continue;
}
$product = product::find($productId);
OrderProduct::create([
'order_id' => $order->id ?? null,
'product_id' => $productId,
// $products=DB::table('products')->where('id',$id)->get();
'quantity' => $item['quantity'],
'Subtotal' =>$item['price'] * $item['quantity'],
'total' => $total += $item['price'] * $item['quantity'],
'price' => $product->price,
'name' => $product->name,
'info' => $product->info,
]);
【问题讨论】:
-
删除/修改某人会话中的产品不会更新它,除非您调用数据库以检查所述产品是否存在/是否仍然相同。会话被设计为数据的快照,本质上并不知道变化。
-
如何调用数据库? @蒂姆刘易斯
-
这不是如何做的问题,而是何时的问题;如果产品被删除,它可能不会出现在店面(无论您在哪里展示产品),因此很难进行交叉引用。通常,您在结帐时处理此问题;在保存订单之前,检查产品、列出价格、通知用户产品是否仍然可用等。
-
很好,我明白你的意思,我之前尝试过一些东西,但我得到了一个错误我可以用结帐控制器更新问题吗? @蒂姆刘易斯
-
当然!对于 Stackoverflow 上的答案,它的概念可能有点宽泛,但如果您可以展示您的尝试以及您遇到的任何错误,那将是向前迈出的一大步。