如何在 Laravel 5 上获取具有关系的字段的名称?

Posted

技术标签:

【中文标题】如何在 Laravel 5 上获取具有关系的字段的名称?【英文标题】:How to get name of a field with relationship on Laravel 5? 【发布时间】:2018-01-27 16:33:09 【问题描述】:

如何查看相关字段的名称而不是 ID?

我有一个Product 表和Category_Product 表。在表Product 中,我有一个字段cateproduct_id(数字类型)我想把它放到我的前端。但它显示了一个数字。

有什么方法可以将cateproduct_id 转换为类别产品的名称?

示例:获取类别名称为Nokia 而不是cateproduct_id = 4

这是控制器产品,如:

public function index() 
    $products = Product::with('cateproductId')->get();
    return view('duan/list', compact('products'));

产品型号:

class Product extends Model

    public function cateproductId()
        return $this->belongsTo(Category_Product::class);
    

在管理员中,我获取列表类别并为我的产品选择一个类别。

在前端页面中,我需要get name category of Product 而不是get id category of Product

<div class="list">
    @foreach($products as $item) 
        <h1>$item->cateproductId->name</h1>
    @endforeach
</div>

我尝试调试如下:

<div class="list">
    @foreach($products as $item) 
        dd($item)
    @endforeach
</div>

结果如下:

#relations: array:1 [▼
    "cateproductId" => null
  ]

【问题讨论】:

你是否尝试在关系中指定外键:return $this->belongsTo(Category_Product::class, cateproduct_id);因为默认情况下它会在 products 表中寻找匹配的 categoryProduct_id。 感谢@user3681740。它正在工作。 【参考方案1】:

在第二个参数中添加外键

class Product extends Model

    public function cateproductId()
        return $this->belongsTo(Category_Product::class,'cateproduct_id');
    

【讨论】:

以上是关于如何在 Laravel 5 上获取具有关系的字段的名称?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 急切加载具有限制和自定义字段的子关系

在 hasMany 关系 Laravel 上获取具有特定值的单个项目

如何使用 Laravel 获取具有表之间关系的数据

Laravel:如何从具有关系的 3 个表中获取数据

Laravel 5.1 - 具有空值的模型上的关系

如何从laravel中的关系中获取对象