我目前有3個表,tags
、product
、album
。
product
、album
相關聯的標籤都在tags
裡面。透過biz_type
進行區分,1表示product
, 2表示album
。
表關係如下
table_tags
id: int
biz_type: int
biz_id: int
table_product
id: int
table_album
id: int
我現在希望透過查詢tags
的分頁列表,去關聯獲取product
和album
的資訊。
目前查看了laravel
的多態關聯,好像不支持這種做法。不知道有沒有什麼方法透過條件進行關聯的嗎?
PHP中文网2017-05-16 16:53:56
Laravel的多對多關聯有講到這個,這個使用場景跟你有點類似你可以看看
http://www.kancloud.cn/baidu/...
Polymorphic Many To Many Relation Table Structure 多型態的多對多關聯資料庫表結構
除了一般的多型關聯,也可以使用多對多的多型關聯。例如,Blog 的 Post 和 Video 模型可以共用多態的 Tag 關聯模型。首先,來看看資料庫表結構:
posts
id - integer
name - string
videos
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
現在,我們準備好設定模型關聯了。 Post 和 Video 模型都可以經由 tags 方法建立 morphToMany 關聯:
class Post extends Model {
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
}
在 Tag 模型裡針對每一種關聯建立一個方法:
class Tag extends Model {
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable');
}
public function videos()
{
return $this->morphedByMany('App\Video', 'taggable');
}
}