Как проверить, существует ли продукт или нет? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть эта функция, где пользователь может добавить товар в корзину. Например, пользователь может добавить один товар в корзину после того, как продавец удалит товар, но он все еще находится в корзине пользователей, поэтому, если он извлечет один товар, который был удален, он перенаправит его обратно в корзину, сообщив, что товар был удален. (один продукт работает нормально), но если у него в корзине два продукта, один был удален, а другой нет, и пытается проверить, он получает ошибку trying to get property of non object. Поэтому я зацикливаюсь на идентификаторах продуктов и проверяю, существует ли продукт в базе данных, но если эта проверка не удалась для одного, а не для другого, я хочу, чтобы пользователь был перенаправлен в корзину, поэтому он должен оформить заказ, только если продукт отсутствуетвыходит из строя. Как я могу это сделать ?

Контроллер

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,
            ]);
        }
    }
}

1 Ответ

0 голосов
/ 02 ноября 2019

Полагаю, у вас есть модель Product, но вы пытаетесь найти product.

Итак, попробуйте:

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

вместо

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...