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 :

Création des entités en Base de données


Sujet :

Doctrine2 PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut Création des entités en Base de données
    Bonjour,

    Dans une classe Categorie, j'ai crée une propriété producteur avec l'annotation suivante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
     * @ORM\OneToMany(targetEntity="Producteur", mappedBy="categorie")
    */
        protected $producteur;
    Dans la classe producteur, j'ai crée une propriété avec l'annotation suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     /**
         * @ORM\ManyToOne(targetEntity="Categorie", inversedBy="producteur")
         * @ORM\JoinColumn(name="cat_id", referencedColumnName="prod_id")
         */
        protected $categorie;
    Lorsque je tape la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:generate:entities Vignoble
    Tout est ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:schema:update --force
    Tout est ok aussi

    Par contre en Base de données le table categorie est crée avec les champs id et name mais dans la table producteurs le champs cat_id n'est pas crée.

    Est-ce normal?

    Merci d'avance.
    Transact.

  2. #2
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    J'ai procédé différemment afin de comprendre d'où pouvait venir le problème.
    J'ai crée 2 entités User et PhoneNumber ainsi :

    Code php : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    namespace Vignoble\ProducteurBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
    use Doctrine\Common\Collections\ArrayCollection;
     
    /**
     * User
     */
    class User {
     
        /**
         * @ManyToMany(targetEntity="Phonenumber")
         * @JoinTable(name="users_phonenumbers",
         *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
         *      inverseJoinColumns={@JoinColumn(name="phonenumber_id", referencedColumnName="id", unique=true)}
         *      )
         * */
        private $phonenumbers;
     
        /**
         * @var integer
         */
        private $id;
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId() {
            return $this->id;
        }
     
        public function __construct() {
            $this->phonenumbers = new ArrayCollection();
        }
     
    }

    Code php : 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
    23
    24
    25
    26
    27
     
     
    namespace Vignoble\ProducteurBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * PhoneNumber
     */
    class PhoneNumber
    {
        /**
         * @var integer
         */
        private $id;
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
    }

    Dans phpMyAdmin je devrais avoir une table users_phonenumbers avec 2 champs user_id et phonenumber_id comme foreign key des tables users et phonenumber

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    as-tu un message d'erreur ? normalement tu en as forcément un, j'y bosse actuellement sur synfony/doctrine2 à chaque fois j'ai eu un message d'erreur en invite de commande.

    supprime tes anciennes tables existantes !

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Bonjour noobyyy,

    Ravi que tu sois en ligne cela me permettra d'avoir de l'aide car actuellement je suis en pleine découverte de Doctrine2.

    Je fais ce que tu me dis et je te tiens au courant.

    Transact.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    avec plaisir je ne suis pas un expert mais si je peux t'aider je le ferai

  6. #6
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    J'ai repris tout "from scratch" pour bien comprendre comment focntionne Doctrine2 lors de l'exécution des commandes.
    J'ai crée 2 tables producteur et article avec un @ManyToOne du côté de la table article avec un attribut producteur ainsi :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /**
         * @ORM\ManyToOne(targetEntity="Vignoble\ProducteurBundle\Entity\Producteur")
         * @ORM\JoinColumn(nullable=false, name="producteur", referencedColumnName="prod_id")
         */
        private $producteur;

    Je constate dans phpmyadmin plusieurs points :
    La table article est crée avec un champ producteur qui est la clé étrangère pointant vers la clé primaire de la table producteur, et un index est crée sur ce même champ.

    Je comprend mieux comment cela fonctionne, maintenant je vais me pencher sur les autres types d'associations (ManyToMany, OneToOne, etc ...)
    Ainsi je pourrai aider les autres sur ce point.

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

Discussions similaires

  1. Création des entités dans la base de données
    Par Leaffy dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 26/12/2011, 11h35
  2. Réponses: 0
    Dernier message: 02/08/2007, 11h51
  3. Où trouver des concepteurs de Base de Données?
    Par TomCrouise dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 13/12/2004, 16h13
  4. [JDBC]Création d'instances de base de données
    Par romano21 dans le forum JDBC
    Réponses: 5
    Dernier message: 29/04/2004, 15h05

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