IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Relations many to many dans schema.yml


Sujet :

Symfony PHP

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 32
    Par défaut Relations many to many dans schema.yml
    Bonjour à tous,

    je développe un projet perso de gestion de catalogue d'oeuvres d'art et je bute sur un problème assez énervant.

    Dans ce projet, je souhaite inclure une gestion des métadonnées. En clair, un utilisateur doit pouvoir définir des métadonnées sur une oeuvre ou un artiste.

    Niveau base de données cela se traduit par une relation many to many de la manière suivante :

    1 artiste peut avoir N métadonnées
    1 même métadonnée peut etre appliquée sur plusieurs artistes

    idem avec les oeuvres:

    1 oeuvre peut avoir N métadonnées
    1 même métadonnée peut etre appliquée sur plusieurs oeuvres

    Jusque là pas de problème, j'y viens donc

    Je ne sais pas comment définir ça en symfony.
    Le message d'erreur que j'ai est le suivant lorsque je crée le modèle et que j'insère les fixtures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`airexpo`.`oeuvre`, CONSTRAINT `oeuvre_artiste_id_artiste_id` FOREIGN KEY (`artiste_id`) REFERENCES `artiste` (`id`))
    Il semble que la relation many to many que j'ai définie ne le soit pas correctement.

    La table de métadonnées est "metadata"
    La table des artistes est "artiste"
    La table des oeuvres est "oeuvre"
    La table de relation entre métadonnées et artistes ou oeuvres est "defined_metadata"

    Voici la définition de la classe DefinedMetadata dans le fichier schema.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DefinedMetadata:
        actAs: 
          Timestampable: ~
        columns:
            metadata_id: 
              type: integer
            oeuvre_id:
              type: integer
            artiste_id:
              type: integer
        relations:
          Artiste:
            class: Artiste
            local: artiste_id
            foreign: id
            refClass: DefinedMetadata
          Oeuvre:
            class: Oeuvre
            local: oeuvre_id
            foreign: id
            refClass: DefinedMetadata
    J'ai inclus le fichier schema.yml pour plus de précisions.

    Si quelqu'un a une idée...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/01/2012, 19h04
  2. [Doctrine] Relation entre deux tables dans schema.yml sans contrainte
    Par ninorotto dans le forum ORM
    Réponses: 8
    Dernier message: 24/08/2011, 10h26
  3. [1.x] Relation Many to Many et colonnes dans la table association
    Par PeytaWodka dans le forum Symfony
    Réponses: 11
    Dernier message: 16/05/2011, 10h26
  4. [1.x] clés primaire dans schema.yml
    Par kamdad dans le forum Symfony
    Réponses: 13
    Dernier message: 24/04/2009, 15h58
  5. [1.x] index=unique dans schema.yml
    Par kamdad dans le forum Symfony
    Réponses: 4
    Dernier message: 23/04/2009, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo