Heim > Fragen und Antworten > Hauptteil
Ich habe derzeit 3 Tische,tags
、product
、album
.
product
、album
相关联的标签都在tags
里面。通过biz_type
进行区分,1表示product
, 2表示album
.
Die Tabellenbeziehung ist wie folgt
table_tags
id: int
biz_type: int
biz_id: int
table_product
id: int
table_album
id: int
Ich hoffe jetzt, die polymorphe Assoziation von tags
的分页列表,去关联获取product
和album
的信息。
目前查看了laravel
abzufragen, aber es scheint, dass dieser Ansatz nicht unterstützt wird. Gibt es eine Möglichkeit, durch Bedingungen eine Beziehung herzustellen?
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');
}
}