Laravel 有很多关系

Laravel hasMany relationship

我有三个 table,storesstore_categoriesproduct_categories。每个table的结构如下

stores

id  name
1   Mystore

store_categories

id   store_id   product_category_id
1       1            1
2       1            2

product_categories

id   name
1    Grocery
2    Vegetable

在我的 Store 模型中,我写了关系

public function store_categories(){
    return $this->hasMany('App\StoreCategory');
}

所以要获取商店的所有数据,我写 i StoresController

$res = Store::with('store_categories')->get(); dump($res);

但是转储显示 store_idproduct_category_id 的关系。如何显示他们的名称(即商店名称、产品类别名称等)?

您需要添加如下多对多关系:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Store extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function categories()
    {
        return $this->belongsToMany('App\ProductCategory','store_categories','store_id','product_category_id');
    }
}

然后您可以执行以下操作:

$res = Store::with('categories')->get(); dump($res);