Laravel 5

Custom Pivot : extends Model ou Extends Pivot ?

  • Avatar de AMENDES
    Membre depuis :
    13/06/2017
    Messages :
    22

    Salut !

    J'ai besoin de vos conseils éclairés !!!

    J'ai deux modèles, Saveur et Panier, et entre les deux une relation ManyToMany.

    J'ai donc un pivot avec sa table panier_saveur.
    Seulement mon Pivot n'est pas satisfaisant en l'état :

    1. je veux pouvoir utiliser mon pivot comme un modèle à part entière (et ensuite faire des routes de type resource vers un controller, ... CRUD quoi pour administrer ce pivot directement sans devoir passer par les modèles parents à chaque fois),
    2. je veux pouvoir y insérer des clé étangères supplémentaires (en plus de celles des modèles Saveur et Panier),
    3. je veux pouvoir l'utiliser comme un pivot Eloquent évidemment (donc accéder, mettre à jour, ... depuis mes modèles parents Saveur et Panier grâce aux relations belongToMany qui y sont définies),
    4. ou encore ajouter d'autre date au format Carbon en plus des classiques created_at et updated_at.

    Ma problématique est que quand je crée mon Pivot avec

    use Illuminate\Database\Eloquent\Relations\Pivot;
    class PanierSaveurPivot extends Pivot

    j'ai les points 2, 3 et 4 qui sont Ok mais le point 1 qui n'est pas possible.

    et si je fais

    use Illuminate\Database\Eloquent\Model;
    class PanierSaveur extends Model

    j'ai les points 1, 2 et 4 ok mais je ne dispose plus du point 3 à savoir des relations Eloquent BelongsToMany entre les modèles parent via le pivot.

    Auriez-vous des idées pour que ces 4 fonctionnalités soient disponibles dans un seul et même système ? Et je peux même rajouter un 5e point qui est le déclenchement des événements lors de la modification de la table pivot (apparement pas possible quand on extends Pivot comme expliqué ici)

    Merci pour votre aide !
    Auré

  • Avatar de AMENDES
    Membre depuis :
    13/06/2017
    Messages :
    22

    Pour info si ça interesse quelqu'un, j'ai pris le parti de créer les 2 objets ci-dessus décrits afin d'avoir toutes les fonctionnalités voulues, et ça marche très bien.
    Sur le Model j'ai défini exactement les mêmes relationsque sur le Pivot.
    Ces deux objets coexistent très bien et je peux donc utiliser le pivot depuis les deux modèles parents, ou bien le modèle directement.

    Cheers !

Vous ne pouvez pas répondre à ce sujet.