[英]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.