Laravel Eloquent关联取最后一条数据报错:Attempt to read property 'price' on bool
Laravel 显示产品最后一条价格报错解决
问题说明
我是Laravel新手,拥有Product和Product_Price两张表,想要在产品页面显示最后一条产品价格,但尝试多种方法后出现报错。
控制器代码
public function show(Request $request, Product $product): View { $this->authorize('view', $product); $ProductTags = $product->ProductTags; $ProductPrice = $product->ProductPrices->last(); return view('app.products.show', compact('product', 'ProductTags', 'ProductPrice')); }
Blade视图代码
@foreach ($ProductPrice as $productprice) <div> {{ $productprice->price }} </div> @endforeach
报错信息
尝试在布尔值上读取属性 "price"
解决步骤
问题根源:
$product->ProductPrices->last()返回的是单个ProductPrice模型实例(或null),而非集合。用@foreach循环遍历单个对象会导致Laravel尝试将其转为可迭代对象时出错,最终触发上述报错。修改Blade代码:移除循环,直接访问单个实例的价格属性,同时增加空值判断,避免无价格记录时出现新的报错:
@if($ProductPrice) <div>{{ $ProductPrice->price }}</div> @endif
- 验证关联关系:确保Product模型中的
ProductPrices关联定义正确,示例如下:
// app/Models/Product.php public function ProductPrices() { return $this->hasMany(ProductPrice::class); }
内容的提问来源于stack exchange,提问作者Sajadullah Safi
相关产品推荐
相关产品推荐

