我目前有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');
}
}