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 :

Problème création tables avec doctrine en relation One-To-One Unidirectionnelle [2.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Problème création tables avec doctrine en relation One-To-One Unidirectionnelle
    Bonjour,

    J'ai 2 entités Departement et ChefDept qui sont liées en relation one to one unidirectionelle.
    Un département à un seul chef et un chef n'est chef que d'un seul département.

    Lorsque je tape dans la console php app/console doctrine:schema:create , j'ai l'exception suivante qui est levée :

    [Doctrine\ORM\ORMException] Column name `id` referenced for relation from MyQL\HMBundle\Entity\Departement towards MyQL\HMBundle\Entity\ChefDept does not exist.
    Je mets le code des mes entités :

    ChefDept.php

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?phpnamespace MyQL\HMBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;
     
     
    /**
     * 
     * @ORM\Entity
     * @ORM\Table(name="chefDept")
     */
    class ChefDept {
     
     
    	/**
    	 * 
    	 * @ORM\Id
    	 * @ORM\Column(type="integer")
    	 * @ORM\GeneratedValue
    	 */
    	protected $idChef;
     
    	/**
    	 * 
    	 * @ORM\Column(type="string", length=30)
    	 */
    	protected $nomChef;
     
     
     
        /**
         * Get idChef
         *
         * @return integer 
         */
        public function getIdChef()
        {
            return $this->idChef;
        }
     
     
        /**
         * Set nomChef
         *
         * @param String $nomChef
         */
        public function setNomChef(\String $nomChef)
        {
            $this->nomChef = $nomChef;
        }
     
     
        /**
         * Get nomChef
         *
         * @return String 
         */
        public function getNomChef()
        {
            return $this->nomChef;
        }
    }
    Departement.php

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?php
    namespace MyQL\HMBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     *
     * @ORM\Entity
     * @ORM\Table(name="Departement")
     */
    class Departement {
     
    	/**
    	 * @ORM\Id
    	 * @ORM\Column(type="integer")
    	 * @ORM\GeneratedValue
    	 */
    	protected  $idDep;
     
    	/**
    	 *
    	 * @ORM\Column(type="string", length=30)
    	 */
    	protected $nomDep;
     
    	/**
    	 * @ORM\OneToOne(targetEntity="MyQL\HMBundle\Entity\chefDept", cascade={"persist"})
    	 */
    	protected $chefDept;
     
     
        /**
         * Get idDep
         *
         * @return integer 
         */
        public function getIdDep()
        {
            return $this->idDep;
        }
     
        /**
         * Set nomDep
         *
         * @param String $nomDep
         */
        public function setNomDep(\String $nomDep)
        {
            $this->nomDep = $nomDep;
        }
     
        /**
         * Get nomDep
         *
         * @return String 
         */
        public function getNomDep()
        {
            return $this->nomDep;
        }
     
        /**
         * Set chefDept
         *
         * @param MyQL\HMBundle\Entity\ChefDept $chefDept
         */
        public function setChefDept(\MyQL\HMBundle\Entity\ChefDept $chefDept)
        {
            $this->chefDept = $chefDept;
        }
     
        /**
         * Get chefDept
         *
         * @return MyQL\HMBundle\Entity\ChefDept 
         */
        public function getChefDept()
        {
            return $this->chefDept;
        }
    }
    Merci d'avance pour votre aide

  2. #2
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Bonjour,

    Ce ne serait pas cela plutôt ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /**
    	 * @ORM\OneToOne(targetEntity="MyQL\HMBundle\Entity\ChefDept", cascade={"persist"})
    	 */  protected $chefDept;
    
    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci Mister Nono pour ta réponse , j'ai deja essayé avec les deux syntaxe mais malheureusement toujours la même exception.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Problème résolu , il fallait préciser quel est l'attribut de mapping pour la relation OneToOne comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Dans  Departement.php
     
    /**
     * @ORM\OneToOne(targetEntity="MyQL\HMBundle\Entity\chefDept", cascade={"persist"})
     * @ORM\JoinColumn(name="chefDept", referencedColumnName="idChef") <--- A AJOUTER
     */
    protected $chefDept;

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/08/2013, 01h02
  2. Problème création table avec netbeans
    Par marwen109 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/01/2012, 10h05
  3. [Doctrine] Relation many to many sur la même table
    Par hmartin.fr dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 01/09/2011, 09h41
  4. Réponses: 6
    Dernier message: 12/06/2006, 16h38
  5. Probleme de création table avec PK et auto_increment
    Par slefevre01 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/02/2006, 14h14

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