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

Laravel开发:如何通过查询构建器显示产品名称而非ID

解决方案:在Laravel中通过产品ID获取产品名称

嘿,这个需求很常见,我给你两种实用的方案,你可以根据自己的场景选择:

方案一:使用Eloquent关联(推荐,更符合Laravel优雅风格)

既然你已经能通过$fd->purchase->product_id拿到产品ID,说明你的Feedback模型已经和Purchase模型建立了关联。那咱们只需要在Purchase模型里再添加上和Product模型的关联即可:

  1. 首先在Purchase模型中定义关联:
// app/Models/Purchase.php
public function product()
{
    // 假设你的products表主键是id,purchases表的外键是product_id
    return $this->belongsTo(Product::class);
}
  1. 获取Feedback数据时,记得预加载关联关系,避免N+1查询问题:
// 在控制器中
$feedbacks = Feedback::with('purchase.product')->get();
  1. 最后在视图中直接调用产品名称:
{{ $fd->purchase->product->name }}

方案二:使用查询构建器的JOIN语句

如果你不想用Eloquent关联,或者需要更灵活的查询,直接用查询构建器的JOIN来关联表也是可以的:

// 在控制器中
$feedbacks = DB::table('feedbacks')
    ->join('purchases', 'feedbacks.purchase_id', '=', 'purchases.id')
    ->join('products', 'purchases.product_id', '=', 'products.id')
    ->select('feedbacks.*', 'products.name as product_name') // 把产品名称取别名方便调用
    ->get();

然后在视图里直接使用别名即可:

{{ $fd->product_name }}

小提醒

  • 确保你的表结构中,purchases表的product_id字段和products表的id字段对应正确;
  • 如果你的模型或表名不是默认规则(比如表名不是products),记得在关联里指定表名或外键哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:35