首页 > 解决方案 > 如何检查产品是否存在 laravel

问题描述

我有这个功能,用户可以将产品添加到购物车。例如,用户可以在某个产品被卖家删除后在购物车中添加一个产品,但它仍然在用户的购物车中,所以如果他签出一个已被删除的产品,它会将他重定向回购物车,说该产品已被删除(一个产品可以正常工作)但是如果他在购物车中有两个产品一个已被删除而另一个没有,并试图检查他得到一个错误trying to get property of non object。因此,我正在遍历产品 ID 并检查产品是否仍然存在于数据库中,但如果该检查失败了一个,而不是另一个,我希望用户被重定向到购物车,所以它应该只在没有产品的情况下结帐失败。我怎样才能做到这一点 ?

控制器

public function store(Request $request)
{
    foreach (session('cart') as $productId => $item) ;
    $product = product::find($productId);
    if (!$product) {
        return redirect()->route('cart')
        }
    //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,
            ]);
        }
    }
}

标签: phplaravellaravel-5

解决方案


我想你有模型Product,但你正在努力寻找product

所以,试试:

$product = Product::find($productId);

代替

$product = product::find($productId);


推荐阅读