recherche

Maison  >  Questions et réponses  >  le corps du texte

Objet d'association - laravel\lumen Comment l'association conditionnelle doit-elle être gérée ?

J'ai actuellement 3 tables,tagsproductalbum.

productalbum相关联的标签都在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的分页列表,去关联获取productalbum的信息。
目前查看了laravel, mais il semble que cette approche ne soit pas supportée. Existe-t-il un moyen d'établir une relation à travers les conditions ?

给我你的怀抱给我你的怀抱2826 Il y a quelques jours611

répondre à tous(3)je répondrai

  • PHP中文网

    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');
    }

    }

    répondre
    0
  • 某草草

    某草草2017-05-16 16:53:56

    adhérer ? Mais ce n'est pas recommandé.

    répondre
    0
  • 怪我咯

    怪我咯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.

    répondre
    0
  • Annulerrépondre