我正在制作Laravel应用程序。
我有一个帖子表,用于存储"博客帖子"。我还有一个用于存储标签的标签表(例如:" Cooking"用于烹饪帖子," Books"用于书帖)。每个帖子都可以有很多标签。我这样设置我的数据库
帖子
标签
PostTags
这是" HasManyThrough" Laravel / Eloquent的关系?我尝试使用
设置我的模型public function tags()
{
return $this->hasManyThrough('App\Tag', 'App\PostTag')
}
然而,这不起作用 - 抛出异常告诉我列名称不存在。
答案 0 :(得分:1)
这实际上是" belongsToMany"关系 - 我遗漏的事实是你可以在声明关系时使用参数指定一个数据透视表:
public function tags()
{
return $this->belongsToMany('App\Tag', 'post_tags')
}
答案 1 :(得分:1)
这不是一种多任务关系。
帖子可以属于许多标签(例如:帖子" Foobar"可以属于" foo"以及" bar"标签)。标签可以属于许多帖子(例如:标签" foo"可以属于帖子" Foobar"以及"另一个帖子")。
所以,在Post类中你会有
public function tags()
{
return $this->belongsToMany(Tag::class);
}
并在Tag类中定义反向
public function posts()
{
return $this->belongsToMany(Post::class);
}
在official docs中阅读更多内容。