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

如何通过Laravel Eloquent关联3张表在视图中显示商品名称?

解决方案:在采购记录视图中显示商品名称

这事儿其实很简单,咱们通过三层关联就能拿到商品名称,分三步来做就行:

  1. 给Productquantity模型添加与Product的关联
    因为你的Purchaserecord已经关联了Productquantity,现在需要让Productquantity也关联上Product,这样才能通过采购记录一路找到商品名称。打开app/Productquantity.php,添加这个关联方法:
public function product() {
    return $this->belongsTo('App\Product', 'prod_id', 'id');
}
  1. 查询时预加载关联,避免性能问题
    如果直接在视图里调用关联,会触发N+1查询(循环一次查一次数据库),所以在控制器获取采购记录的时候,用with()方法预加载两层关联:
// 控制器里获取数据的代码
$dataPurchaseRecord = Purchaserecord::with('productquantity.product')->get();

这样系统会一次性把所有需要的数据都查出来,性能会好很多。

  1. 在视图中通过关联链获取商品名称
    现在在循环里就可以顺着关联拿到商品名称了,修改你的视图代码:
@foreach($dataPurchaseRecord as $Record)
<tr>
    <!-- 这里就是商品名称的输出 -->
    <td>{{ $Record->productquantity->product->product_name }}</td>
    <!-- 你的其他字段继续保留即可 -->
    <td>{{ $Record->quantity }}</td>
    <td>{{ $Record->amount }}</td>
</tr>
@endforeach

额外提示:处理关联为空的情况

如果存在采购记录对应的商品规格(Productquantity)或者商品(Product)被删除的情况,直接调用会报错。可以用PHP的可选链操作符和空合并运算符来处理:

<td>{{ $Record->productquantity?->product?->product_name ?? '无商品信息' }}</td>

这样当关联不存在时,会显示无商品信息而不是抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:34:02