Maison > Questions et réponses > le corps du texte
J'ai actuellement 3 tables,tags
、product
、album
.
product
、album
相关联的标签都在tags
里面。通过biz_type
进行区分,1表示product
, 2表示album
.
La relation entre les tables est la suivante
table_tags
id: int
biz_type: int
biz_id: int
table_product
id: int
table_album
id: int
J'espère maintenant interroger l'association polymorphe de tags
的分页列表,去关联获取product
和album
的信息。
目前查看了laravel
, mais il semble que cette approche ne soit pas supportée. Existe-t-il un moyen d'établir une relation à travers les conditions ?
PHP中文网2017-05-16 16:53:56
L'association polymorphe plusieurs-à-plusieurs de Laravel en parle. Ce scénario d'utilisation est quelque peu similaire au vôtre. Vous pouvez y jeter un œil
http://www.kancloud.cn/baidu/...
Structure de table de relations polymorphes plusieurs à plusieurs Structure de table de base de données relationnelle polymorphe plusieurs à plusieurs
En plus des associations polymorphes générales, des associations polymorphes plusieurs-à-plusieurs peuvent également être utilisées. Par exemple, les modèles Post et Vidéo de Blog peuvent partager le modèle d'association de Tag polymorphe. Tout d’abord, jetons un coup d’œil à la structure des tables de la base de données :
messages
id - integer
name - string
vidéos
id - integer
name - string
étiquettes
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
Maintenant, nous sommes prêts à créer l'association modèle. Les modèles Post et Video peuvent établir des associations morphToMany via la méthode tags :
class Post étend le modèle {
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
}
Créez une méthode pour chaque association dans le modèle Tag :
class Tag étend le modèle {
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable');
}
public function videos()
{
return $this->morphedByMany('App\Video', 'taggable');
}
}
怪我咯2017-05-16 16:53:56
Vous pouvez également implémenter vous-même une requête de corrélation. Actuellement, le framework ne fournit pas de requêtes conditionnelles pour les corrélations polymorphes car elles sont trop complexes.