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

Doctrine2 PHP Discussion :

Autogénération des entités à partir d'un existant : problème avec une relation ManyToMany


Sujet :

Doctrine2 PHP

  1. #1
    Membre très actif

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Par défaut Autogénération des entités à partir d'un existant : problème avec une relation ManyToMany
    Bonjour,

    J'ai posé la question ici en anglais, mais personne ne répond, pourtant ma question me semble assez simple...

    J'ai une base de données pré-existante, et je veux créer les entités automatiquement avec Doctrine. (Pour la petite parenthèse, Doctrine ne connait pas le type "POINT" de MySQL, j'ai dû les changer en deux colonnes lattitude / longitude).

    Je me suis donc servi du tutoriel ici, mais il manque une information et je n'arrive pas à avancer sans.

    J'ai une table "personne" et une table "adresse". Une personne peut avoir une ou plusieurs adresses, et une adresse peut être reliée à une ou plusieurs personnes. C'est donc une relation manyToMany.

    Dans la documentation, deux manques cruciaux :

    • lorsqu'il y a une relation oneToMany, ils donnent juste une astuce, sans aller plus loin et donner d'exemple concret :
      If you have oneToMany relationships between your entities, you will need to edit the generated xml or yml files to add a section on the specific entities for oneToMany defining the inversedBy and the mappedBy pieces.
    • il n'y a rien concernant les relations manyToMany.


    Auriez vous une réponse à l'une des deux interrogations s'il vous plait ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Par défaut
    Salut,

    je n'ai pas bien compris quelles étaient les interrogations mais pour ce qui est des relations ManyToMany, as-tu consulté la documentation ici ? http://docs.doctrine-project.org/pro...-bidirectional

    Si tu pars d'un schéma existant, j'imagine que choisir les noms tables, des champs identifiants et des noms des tables de jointure (JoinTable) dans la définition des Entities et des Associations doit te permettre de démarrer à partir de ton existant.

  3. #3
    Membre très actif

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Par défaut
    Bonjour,

    Voici comment j'ai résolu mon problème.
    En fait la documentation n'est pas correcte, il y a quelques modifications à faire.

    Il faut ajouter "@ORM\" au lieu de "@" tout court. Voici un exemple de mon code qui fonctionne :

    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
        /**
         * @ORM\ManyToMany(targetEntity="Adresse", inversedBy="personnes")
         * @ORM\JoinTable(name="personne_adresse")
         **/
        private $adresses;
        /**
         * @ORM\ManyToMany(targetEntity="Partenaire", inversedBy="personnes")
         * @ORM\JoinTable(name="personne_partenaire")
         **/
        private $partenaires;
        /**
         * @ORM\ManyToMany(targetEntity="Telephone", inversedBy="personnes")
         * @ORM\JoinTable(name="personne_telephone")
         **/
        private $telephones;
     
        public function __construct() {
            $this->adresses = new \Doctrine\Common\Collections\ArrayCollection();
            $this->partenaires = new \Doctrine\Common\Collections\ArrayCollection();
            $this->telephones = new \Doctrine\Common\Collections\ArrayCollection();
        }
    De plus, il faut supprimer les fichiers Php dans lequels il y a la déclaration des tables ManyToMany correspondantes. Dans mon exemple, supprimer "PersonnePartenaire.php", "PersonneTelephone.php" etc.

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

Discussions similaires

  1. Problème avec une relation ManytoMany
    Par GodziFP dans le forum Hibernate
    Réponses: 2
    Dernier message: 25/08/2014, 12h50
  2. Problème avec une relation et le fetch en cascade
    Par djarBoy dans le forum QxOrm
    Réponses: 3
    Dernier message: 25/05/2012, 14h02
  3. Problème avec une relation many-to-many
    Par jillthe1 dans le forum Doctrine2
    Réponses: 9
    Dernier message: 19/12/2011, 21h05
  4. Problème pour requeter avec une relation manyToMany
    Par fab76000 dans le forum Hibernate
    Réponses: 0
    Dernier message: 26/04/2011, 17h32
  5. Problème avec une relation maître détail
    Par nb-wissam dans le forum Forms
    Réponses: 2
    Dernier message: 15/06/2010, 11h03

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