Laravel有很多关系

时间:2015-12-08 16:02:58

标签: laravel-5 eloquent has-many

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

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');
}

为了获得商店的所有数据,我写了StoresController

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

但转储在关系中显示store_idproduct_category_id。如何显示其名称(即商店名称,产品类别名称等)?

1 个答案:

答案 0 :(得分:1)

您需要添加“多对多”关系,如下所示:

<?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);