我正在制作一个Laravel应用程序 .
我有一个存储“博客帖子”的帖子表 . 我还有一个用于存储标签的标签表(例如:用于烹饪帖子的“烹饪”,用于书籍帖子的“书籍”) . 每个帖子都可以有很多标签 . 我这样设置我的数据库
帖子
-
id
-
文字
-
Headers
标签
-
id
-
名字
PostTags
-
id
-
tag_id
-
post_id
这是Laravel / Eloquent中的“HasManyThrough”关系吗?我尝试使用设置我的模型
public function tags()
{
return $this->hasManyThrough('App\Tag', 'App\PostTag')
}
但是,这不起作用 - 抛出异常告诉我列名不存在 .
2 回答
这实际上是一个“belongsToMany”关系 - 我遗漏的事实是你可以在声明关系时使用参数指定一个数据透视表:
这不是一种多任务的关系 .
帖子可以属于许多标签(例如:帖子“Foobar”可以属于“foo”和“bar”标签) . 标签可以属于许多帖子(例如:标签“foo”可以属于帖子“Foobar”和“Another post”) .
所以,在Post课程中你会有
在Tag类中,您将定义逆
阅读official docs中的更多内容 .