Laravel 5

Comprendre les relations polymorph

  • Avatar de Fr14397339
    Membre depuis :
    04/05/2018
    Messages :
    2

    bonjour,
    j'ai les tables suivantes :

    PANIER
    id, user_id

    LIGNE_PANIER
    panier_id, produit_id, produit_type

    VIDEO
    id, url

    PHOTO
    id, url

    j´aimerais faire quelqe chose comme
    $produit = Produit::find(1);
    $panier->lignepanier()->save($produit);

    jai essayer des morphto morphmany mais je n´apprehende pas la doc laravel a propos des relations polymorph. pouvez vous maider svp ?

    merci

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1998

    Bonjour,

    Le schéma des données ne me paraît pas très clair. Je suppose qu'il y a aussi une table des produits et produit_type devrait plutôt être en relation avec cette seule table.

  • Avatar de Fr14397339
    Membre depuis :
    04/05/2018
    Messages :
    2

    bonjour

    en fait jai mis Produit::find mais Produit est soit PHOTO soit VIDEO

    donc dans ligne panier jz devrais avoir
    (1, 1, "App\Photo")

    lorsquon insere dans le panier dont l´id est 1 le produit 1 qui est une photo . jai oublie de le preciser mais LIGNE_PANIER contient une cle primaire id

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1998

    Ah ok je comprends,

    Comment as-tu établi les relations ?

    Normalement tu devrais avoir dans Photo :

    public function paniers()
    {
    return $this->morphToMany('App\Panier', 'produit');
    }

    Et dans Video :

    public function paniers()
    {
    return $this->morphToMany('App\Panier', 'produit');
    }

    Et dans Panier :

    public function videos()
    {
    return $this->morphedByMany('App\Video', 'produit');
    }
    public function photos()
    {
    return $this->morphedByMany('App\Photo', 'produit');
    }

Vous ne pouvez pas répondre à ce sujet.