У меня есть эта функция, где пользователь может добавить товар в корзину. Например, пользователь может добавить один товар в корзину после того, как продавец удалит товар, но он все еще находится в корзине пользователей, поэтому, если он извлечет один товар, который был удален, он перенаправит его обратно в корзину, сообщив, что товар был удален. (один продукт работает нормально), но если у него в корзине два продукта, один был удален, а другой нет, и пытается проверить, он получает ошибку 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,
]);
}
}
}