[英]Laravel posts and tags: has many through relationship?
我正在制作Laravel应用程序。
我有一个帖子表,用于存储“博客帖子”。 我也有一个标签表来存储标签(例如:“ Cooking”用于烹饪帖子,“ Books”用于书籍帖子)。 每个帖子可以有很多标签。 我这样设置数据库
帖子
标签
PostTags
这是Laravel / Eloquent中的“ HasManyThrough”关系吗? 我尝试使用建立模型
public function tags()
{
return $this->hasManyThrough('App\Tag', 'App\PostTag')
}
但是,这行不通-抛出异常告诉我列名不存在。
这实际上是一个“ belongsToMany”关系-我所缺少的是您可以在声明关系时使用参数来指定数据透视表,如下所示:
public function tags()
{
return $this->belongsToMany('App\Tag', 'post_tags')
}
这不是“多对多”的关系。
一个帖子可以属于许多标签(例如:帖子“ Foobar”可以属于“ foo”和“ bar”标签)。 标签可以属于许多帖子(例如:标签“ foo”可以属于帖子“ Foobar”和“另一个帖子”)。
因此,在Post课程中
public function tags()
{
return $this->belongsToMany(Tag::class);
}
然后在Tag类中定义反函数
public function posts()
{
return $this->belongsToMany(Post::class);
}
在官方文档中了解更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.