繁体   English   中英

Laravel帖子和标签:有很多直通关系吗?

[英]Laravel posts and tags: has many through relationship?

我正在制作Laravel应用程序。

我有一个帖子表,用于存储“博客帖子”。 我也有一个标签表来存储标签(例如:“ Cooking”用于烹饪帖子,“ Books”用于书籍帖子)。 每个帖子可以有很多标签。 我这样设置数据库

帖子

  • ID
  • 文本
  • 标题

标签

  • ID
  • 名称

PostTags

  • ID
  • TAG_ID
  • POST_ID

这是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM