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

ORM PHP Discussion :

Problème Table associative [Doctrine]


Sujet :

ORM PHP

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut Problème Table associative
    Bonjour,

    Je suis sous sympfony 1.4 et je souhaite créer une base avec comme tables :

    une table order, une table classe.

    Un order peut avoir 0 ou plusieurs classes.

    J'ai un schéma.yml comme suit :

    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
    Order:
      columns:
    	type_id: { type:string(255), default: employee}
    	...
     
     
    	relations:
    	  classe: { class: Classe, local: id, foreign: classe_id, refClass: Orderclasse }
     
    Classe:
      columns:
        name: { type:string(255) }
      relations:
        order: {class: Order, local: id, foreign: classe_id, refClass: OrderClasse }
     
    OrderClasse:
      tableName: order_classe
      columns:
        order_id: {type: integer, primary: true}
        classe_id: {type: integer, primary: true}
    Je ne suis pas sûr qu'il soit bon car quand je build le sql, je ne trouve pas la table order_classe dans la base.

    J'ai regardé sur la doc officielle mais je ne réussis pas à générer le code qu'il faut.

    Merci de m'éclairer.
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Je me réponds :

    Il faut d'abord faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:build-model
    et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:build-sql
    A+
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  3. #3
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Pour infos si tu utilises la bdd MySQL avec l'application MySQLWorkbench tu as des plugin's permettant de générer un schéma YAML pour Doctrine et Propel.

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Ok, merci pour le renseignement.
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    J'aurais une autre question concernant un schéma un peu différent :

    Je dois renseigner certains champs dans une table order comme suit :

    Commentaires 1 : Zone de texte
    Classe1 : Liste de choix multiple

    Commentaires 2 : Zone de texte
    Classe2 : Liste de choix multiple

    Commentaires 3 : : Zone de texte
    Classe3 : Liste de choix multiple

    Sachant que j'ai une table classe avec id et name.

    Je pensais modéliser de la sorte :

    table order

    commentaires 1 : varchar(255)
    classe_id1 int foreign key reference order_classe(id)

    commentaires 2 : varchar(255)
    classe_id2 int foreign key reference order_classe(id)

    commentaires 3 : varchar(255)
    classe_id3 int foreign key reference order_classe(id)

    table order_classe

    order_id int
    classe_id int

    Mais comment ce schéma se traduit il avec les modeles ?

    Est ce que ce schéma est valable ?

    Il y a t il une alternative ?

    Je ne suis pas habitué à dev avec symphony/doctrine (projet récupéré)...

    Merci.
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  6. #6
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Alors voici la doc très bien faite pour l'explication des différents type de liaisons : http://www.doctrine-project.org/proj...chema-files/pl

    Une fois que tu as tout fait dans le fichier schema.yml, il suffit juste de faire un build-model et toutes les classes seront générées.

    Les liaisons seront directement faites dans l'objet, ce qui te permet d'écrire comme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q = Doctrine_Query::create()     ->select('u.id, p.id')     ->from('User u')     ->leftJoin('u.Phonenumbers p');

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Oui, je suis sur la doc depuis ce matin mais mon schéma est un peu particulier... et je ne trouve pas d'équivalent dans la doc...

    En fait, est il possible de faire une relation 0,1 entre la table order et classe_order qui elle même représente une relation 0,n entre order et classe.

    ce n'est pas une simple relation entre un order et une classe mais entre un order qui comporte au maximum 3 lignes de 0,n classes.

    Donc on aurait :

    class_id1 qui est une clé étrangére pointant sur l'id de la table relationnelle du couple order/classe

    class_id2 et class_id3 également

    Sinon, il faudrait 3 tables d'associations pour chaque champs :

    table order
    local: id, foreign: order_id, class: order_classe_1
    local: id, foreign: order_id, class: order_classe_2
    local: id, foreign: order_id, class: order_classe_3

    la même chose pour classe...

    table classe
    local:id, foreign: class_id, class: order_classe_1
    etc...

    Je ne vois pas comment représenter ça dans le schéma.yml...
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    C'est ok avec une relation de type many to many pour les 3 tables d'association...

    Merci.
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  9. #9
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Là tu allais trop loin. Tu faisais du métier dans de la persistance de données.

    Attention à ne pas mélanger les contraintes de l'application développé avec les contraintes de la bdd.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème macro pour table association
    Par aidada dans le forum Macros Access
    Réponses: 3
    Dernier message: 13/05/2014, 10h58
  2. [AC-2010] Probléme "enregistrements associés requis dans la table"
    Par Chris3180 dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2014, 15h25
  3. Réponses: 1
    Dernier message: 12/07/2013, 08h32
  4. [Doctrine] Problème: table associative insertion unique
    Par krouge dans le forum ORM
    Réponses: 1
    Dernier message: 23/08/2012, 16h10
  5. Problèmes table de données MySQL et fichiers associés!
    Par sofien dans le forum Administration
    Réponses: 6
    Dernier message: 04/12/2008, 08h37

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