php - 如何检查产品是否存在 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,
]);
}
}
}
解决方案
我想你有模型Product
,但你正在努力寻找product
。
所以,试试:
$product = Product::find($productId);
代替
$product = product::find($productId);
推荐阅读
- php - 最新的 Cookie Laravel 上的“反序列化():61 字节偏移量 0 处出错”
- node.js - Puppeteer Chromium 无法浏览
- c# - 退出构造函数时,不可为空的属性必须包含非空值。考虑将属性声明为可为空
- java - 在 XML 对象中附加 XML 标记
- contains - UIPATH - 如果条件是动态的
- javascript - 在 JavaScript 中查找行和列之间的项目
- react-native - 如何在 Android 设备上使用 shadowColor?
- java - maven-jar-plugin 生成带有错误 MANIFEST.MF 的 jar
- python-3.8 - 在 Python 中验证用户输入时出错
- sql - SQL stratascratch facebook 面试题