簡體   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