You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"

解决步骤

  1. 问题根源:$product->ProductPrices->last()返回的是单个ProductPrice模型实例(或null),而非集合。用@foreach循环遍历单个对象会导致Laravel尝试将其转为可迭代对象时出错,最终触发上述报错。

  2. 修改Blade代码:移除循环,直接访问单个实例的价格属性,同时增加空值判断,避免无价格记录时出现新的报错:

@if($ProductPrice)
    <div>{{ $ProductPrice->price }}</div>
@endif
  1. 验证关联关系:确保Product模型中的ProductPrices关联定义正确,示例如下:
// app/Models/Product.php
public function ProductPrices()
{
    return $this->hasMany(ProductPrice::class);
}

内容的提问来源于stack exchange,提问作者Sajadullah Safi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:35:05