所以我想获取类别名称,这就是我所拥有的 平板电脑:
类别:ID,名称
post_categories :id,post_id,category_id
发布:ID,列
我有以下模型:Post
,PostCategory
和Category
。
发布模型:
public function categories()
{
return $this->hasMany('App\PostCategory');
}
PostCategory模型:
public function category()
{
return $this->hasMany(Category::class, 'id', 'category_id');
}
在我拥有的控制器中
return Post::with('categories.category')->orderby('id','desc')->get();
我的结果是
[
{
"id": 50,
"categories": [
{
"id": 92,
"category_id": 11,
"category": [
{
"id": 11,
"name": "JXrfLHdQVNON",
"image": null
}
]
}
]
}
]
我希望它像
[
{
"id": 50,
"categories": [
{
"id": 1,
"name": "category_name",
"image": null
}
]
}
]
有办法吗?我一直在玩这个游戏,还没有设法找到一种简单的方法
答案 0 :(得分:1)
您的Post模型内部:
public function categories()
{
return $this->belongsToMany('App\Model\Category','post_categories','post_id','category_id')->withTimestamps();
}
在您的控制器中:
return Post::with('categories:id,name,image')->orderBy('id','desc')->get();
答案 1 :(得分:0)
这是一个多对多的关系。确保您的关系建立正确。如果要选择特定的列,可以执行以下操作:
return Post::with('categories.category:id,name')->orderby('id','desc')->get();
它将返回类别表/模型中的列id, name
。您必须指定id
。
https://laravel.com/docs/5.7/eloquent-relationships#many-to-many
https://laravel.com/docs/5.7/eloquent-relationships#eager-loading