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 :

Erreur : "No mapping found for field 'id'"


Sujet :

Doctrine2 PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut Erreur : "No mapping found for field 'id'"
    Bonjour,

    J'ai cette erreur très bizarre et je ne la comprends pas vu que le mapping est normalement fait.



    Voilà ma classe qui pose problème :

    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
    <?php
     
    namespace monSite\SettingsBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * monSite\SettingsBundle\Entity\Settings
     *
     * @ORM\Table(name="settings")
     * @ORM\Entity
     */
    class Settings
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
     
        /**
         * @var Creditcard
         *
         * @ORM\ManyToOne(targetEntity="Creditcard")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="creditCard_id", referencedColumnName="id")
         * })
         */
        private $creditcard;
     
        /**
         * @var Accounttype
         *
         * @ORM\ManyToOne(targetEntity="Accounttype")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="accountType_id", referencedColumnName="id")
         * })
         */
        private $accounttype;
     
     
        public function getAccountType()
        {
            return $this->accountType;
        }
     
        public function setAccountType(AccountType $accountType)
        {
            $this->accountType = $accountType;
        }
     
        public function getCreditCard()
        {
            return $this->creditCard;
        }
     
        public function setCreditCard(CreditCard $creditCard)
        {
            $this->creditCard = $creditCard;
        }
    }

  2. #2
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Euh au cas où... Les accesseurs sont bien créés?
    Le schema est correctement créé?

    Si il s'agit de ta classe entière, tu n'as pas de getId().

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par KzrData Voir le message
    Euh au cas où... Les accesseurs sont bien créés?
    Le schema est correctement créé?

    Si il s'agit de ta classe entière, tu n'as pas de getId().
    Les accesseurs sont créés à la main (par moi ^^) et la BDD est correct.

    Il s'agit pour l'instant de ma classe entière pour mes tests je n'ai pas besoin de plus. Et pour le getId() je n'en ai pas besoin non plus, mais si je le créer ça ne change rien.

    j'ai fait mon schéma force avec doctrine, j'ai aussi essayer de générer la classe d'après la table, mais ça me mets toujours l'erreur, et j'ai aussi vider le cache des centaines de fois.

    Je suis complètement bloqué :d

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    En effet tu n'as pas getId():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
    on peut voir le fichier de métadonnée générée : /doctrine/metadata/orm/Settings.orm.yml ?

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par aitiahcene Voir le message
    En effet tu n'as pas getId():
    /doctrine/metadata/orm/Settings.orm.yml ?
    Le getId() ne résout rien.

    Voilà le fichier Settings.orm.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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Settings:
      type: entity
      table: settings
      fields:
        id:
          id: true
          type: integer
          unsigned: false
          nullable: false
          generator:
            strategy: IDENTITY
      oneToOne:
        creditcard:
          targetEntity: Creditcard
          cascade: {  }
          mappedBy: null
          inversedBy: null
          joinColumns:
            creditCard_id:
              referencedColumnName: id
          orphanRemoval: false
        accounttype:
          targetEntity: Accounttype
          cascade: {  }
          mappedBy: null
          inversedBy: null
          joinColumns:
            accountType_id:
              referencedColumnName: id
          orphanRemoval: false
      lifecycleCallbacks: {  }

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    bizarre oui ! ce n'est pas un soucis de strategy de ton SGBDD?? change le nom de la stratégie de génération d'identifiant. juste pour tester les noms valides : AUTO, SEQUENCE, TABLE et NONE



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fields:
        id:
          id: true
          type: integer
          unsigned: false
          nullable: false
          generator:
            strategy: SEQUENCE
    supprime l'ancienne entité et refais les commandes de générations d'entité:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    php app/console doctrine:mapping:import monSiteSettingsBundle annotation
     
    php app/console doctrine:generate:entities monSiteSettingsBundle
    et la mise a jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:schema:update --force

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    J'ai essayer avec SEQUENCE mais rien a faire, toujours la même erreur. j'ai refait complètement ma classe Settings (de manière autogénérer même avec les get / set) et voilà ce que j'ai :

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
     
    namespace monSite\SettingsBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * monSite\SettingsBundle\Entity\Settings
     *
     * @ORM\Table(name="settings")
     * @ORM\Entity
     */
    class Settings
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
     
        /**
         * @var Creditcard
         *
         * @ORM\ManyToOne(targetEntity="Creditcard")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="creditCard_id", referencedColumnName="id")
         * })
         */
        private $creditcard;
     
        /**
         * @var Accounttype
         *
         * @ORM\ManyToOne(targetEntity="Accounttype")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="accountType_id", referencedColumnName="id")
         * })
         */
        private $accounttype;
     
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set creditcard
         *
         * @param monSite\SettingsBundle\Entity\Creditcard $creditcard
         */
        public function setCreditcard(\monSite\SettingsBundle\Entity\Creditcard $creditcard)
        {
            $this->creditcard = $creditcard;
        }
     
        /**
         * Get creditcard
         *
         * @return monSite\SettingsBundle\Entity\Creditcard 
         */
        public function getCreditcard()
        {
            return $this->creditcard;
        }
     
        /**
         * Set accounttype
         *
         * @param monSite\SettingsBundle\Entity\Accounttype $accounttype
         */
        public function setAccounttype(\monSite\SettingsBundle\Entity\Accounttype $accounttype)
        {
            $this->accounttype = $accounttype;
        }
     
        /**
         * Get accounttype
         *
         * @return monSite\SettingsBundle\Entity\Accounttype 
         */
        public function getAccounttype()
        {
            return $this->accounttype;
        }
    }
    J'ai néanmoins toujours la même erreur.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    t'as généré les fichiers .php~ comme Settings.php~ dans Entity/ ?

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Oui ils y sont

    Merci de ton aide, j'espère qu'on va trouver la solution...

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    une simple question ces entité a la base tu les a créé avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console generate:doctrine:entity
    et tout ce qui suit

    ou avec une une base de donnée qui existe déjà !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:mapping:convert --from-database yml ... /Resources/config/doctrine/metadata/orm
    Si avec la 1ere commande surement tu t'es gouré lors de la saisie dans le terminal !!

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Je les avais fait a la main, et comme ça ne marchait pas j'ai essayer avec la création automatique, et ça me fait toujours la même erreur.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    Je comprends c'est bizarre tu as un soucis avec le champ "id" qui s'est crée automatiquement !!

    fais cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:mapping:info
    mais pendant l'étape :

    Configuration format (yml, xml, php, or annotation) [annotation]:_

    t'as fais quoi ? as tu sélectionné un format ou tu as appuyer sur entrée ?

  13. #13
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    Tu es sur qu'il ne s'agit seulement que de cette entité et non d'une autre à partir de laquelle tu y ferais appel et où tu te serais trompé dans le mapping?

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par aitiahcene Voir le message
    t'as fais quoi ? as tu sélectionné un format ou tu as appuyer sur entrée ?
    Je viens de faire le mapping info, il y a le tag [OK] devant mon entité settings

    @KzrData : Je ne sais pas, je ne fais appel à cette entité que dans mon controller qui se présente de cette façon :

    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
        public function settingsAction()
        {
            if(!$this->get('security.context')->isGranted('ROLE_USER'))
            {
                throw new AccessDeniedHttpException('Accès limité aux personnes inscritent au site');
            }
            else
            {
                $settings = new Settings();
                $userManager = $this->get('fos_user.user_manager');
                $userCurrent = $this->container->get('security.context')->getToken()->getUser();
     
                $user = $userManager->findUserBy(array('username' => $userCurrent));
     
                if($user->getSettings() != null)
                {
                    $settings = $user->getSettings();
                }
     
                $form = $this->createForm(new LodgementType(), $settings);
     
                $formHandler = new SettingsHandler($form, 
                                    $this->get('request'), 
                                    $userManager,
                                    $user);
     
     
                if($formHandler->process())
                {
                    return $this->redirect( $this->generateUrl('mon_site_settings', 
                            array('id' => $settings->getId())) );
                }
                return $this->render('MonSiteSettingsBundle:SiteBoard:settings.html.twig',
                       array('form' => $form->createView()));
            }
        }
    Vraiment bizarre comme erreur tout de même.

    J'ai créer mon bundle a la main (l'architecture etc.) ça peut venir de là ?

  15. #15
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Toujours pas trouvé de réponse...

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    as-tu trouvé une solution à ton problème ?

    Personnellement, j'avais le même souci que toi mais ça venait d'une relation faite vers cette entité par une autre qui était problématique.

    J'avais une relation "OneToOne" entre un politicien et un parti et la même erreur que toi sur l'entité Parti. Après correction, le "ManyToOne" et le mappedBy remplacé par inversedBy dans l'entité Politicien a résolu le problème !

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

Discussions similaires

  1. [2.x] [Symfony2][VichUploaderBundle] Mapping not found for field
    Par crazy_inf dans le forum Symfony
    Réponses: 1
    Dernier message: 04/01/2015, 16h08
  2. Réponses: 1
    Dernier message: 19/02/2014, 20h03
  3. Réponses: 5
    Dernier message: 20/05/2012, 13h49
  4. Réponses: 5
    Dernier message: 28/01/2010, 22h41

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