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 :

No metadata classes to process - update


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut No metadata classes to process - update
    Bonjour,

    J'ai un message d'erreur qui s'affiche dans la console symfony lorsque je lance la commande doctrine:schema:update.
    Le message d'erreur est le suivant : no metadata classes to process

    Mon bundle est bien renseigné dans le ficher AppKernel.php.
    L'auto-mapping est à true dans le fichier config.yml.

    Que je créé une entité en yml, annonation ou php, le message d'erreur est toujours le même.

    Seriez-vous ce que je dois modifier? J'ai cherché sur le net et je n'ai pas trouvé la solution.

  2. #2
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Une première commande pratique, pour valider ton schema avant de l'appliquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php app/console doctrine:schema:validate
    Ensuite, je crois qu'il faut toujours mettre --force avec la commande update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    php app/console doctrine:schema:update --force
    Après, il faudrait que tu nous donnes ton fichier config.yml parce que là, c'est pas simple comme ça de savoir où est le problème.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Pour la commande, doctrine:schema:validate
    Nom : Greenshot3.png
Affichages : 689
Taille : 2,7 Ko

    Pour la commance doctrine:schema:update --force
    Cela ne change pas et l'erreur persiste.

    Pour le fichier config.yml se situant dans app/config

    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
    imports:
        - { resource: parameters.yml }
        - { resource: security.yml }
     
    framework:
        #esi:             ~
        #translator:      { fallback: %locale% }
        secret:          %secret%
        router:
            resource: "%kernel.root_dir%/config/routing.yml"
            strict_requirements: ~
        form:            ~
        csrf_protection: ~
        validation:      { enable_annotations: true }
        templating:
            engines: ['twig']
            #assets_version: SomeVersionScheme
        default_locale:  "%locale%"
        trusted_proxies: ~
        session:         ~
        fragments:       ~
     
    # Twig Configuration
    twig:
        debug:            %kernel.debug%
        strict_variables: %kernel.debug%
     
    # Assetic Configuration
    assetic:
        debug:          %kernel.debug%
        use_controller: false
        bundles:        [ ]
        #java: /usr/bin/java
        filters:
            cssrewrite: ~
            #closure:
            #    jar: %kernel.root_dir%/Resources/java/compiler.jar
            #yui_css:
            #    jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
     
    # Doctrine Configuration
    doctrine:
        dbal:
            driver:   %database_driver%
            host:     %database_host%
            port:     %database_port%
            dbname:   %database_name%
            user:     %database_user%
            password: %database_password%
            charset:  UTF8
            # if using pdo_sqlite as your database driver, add the path in parameters.yml
            # e.g. database_path: %kernel.root_dir%/data/data.db3
            # path:     %database_path%
     
        orm:
            auto_generate_proxy_classes: %kernel.debug%
            auto_mapping: true
     
    # Swiftmailer Configuration
    swiftmailer:
        transport: %mailer_transport%
        host:      %mailer_host%
        username:  %mailer_user%
        password:  %mailer_password%
        spool:     { type: memory }

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Pour information, je n'ai pas compris encore à quoi servait le dossier dependencyInjection dans le bundle.
    Je n'ai donc rien configuré par rapport à cela.

    Est-ce que cela pourrait avoir un rapport avec l'entity?

  5. #5
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Oublie le DependencyInection pour le moment, il n'est pas en cause.

    Peux-tu nous montrer tes fichiers d'entité et ton mapping ORM ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Le fichier Entity situé dans src/Symfony/TestBundle/Entity/User

    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
    <?php
     
    namespace Symfony\TestBundle\Entity\User;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Post
     */
    class Post
    {
        /**
         * @var integer
         */
        private $id;
     
        /**
         * @var string
         */
        private $userName;
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set userName
         *
         * @param string $userName
         * @return Post
         */
        public function setUserName($userName)
        {
            $this->userName = $userName;
     
            return $this;
        }
     
        /**
         * Get userName
         *
         * @return string 
         */
        public function getUserName()
        {
            return $this->userName;
        }
    }
    Comme c'est l'entity est au format YML, le mapping est situé dans Symfony/TestBundle/Ressources/config/doctrine

    Et est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Symfony\TestBundle\Entity\User\Post:
        type: entity
        table: null
        fields:
            id:
                type: integer
                id: true
                generator:
                    strategy: AUTO
            userName:
                type: string
                length: 255
        lifecycleCallbacks: {  }
    Quelque soit le format de l'entité, l'erreur est toujours la même.

  7. #7
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Alors, déjà, si tu ne l'utilises pas dans ton fichier, tu peux enlever le "use Doctrine\ORM\Mapping as ORM;" de ton fichier src/Symfony/TestBundle/Entity/User.

    Ensuite, pour le mapping de ton entité :

    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
     
    Symfony\TestBundle\Entity\User\Post: # Ok, donc on est d'accord, tu veux mapper une entité Post qui se trouve dans le dossier src/Symfony/TestBundle/User/Post.php
        type: entity
        table: null # => C'est pas obligatoire, mais c'est toujours mieux de donner un nom à ta table (c'est comme tu veux)
     
    # Visiblement, dans la doc, ton id se déclare en dehors de "fields" en yaml
    # Ci dessous, tiré de la doc
        id:
            id:
                type: integer
                generator: { strategy: AUTO }
    # FIN
     
        fields:
     
    # Selon la doc, ce qui suit ne doit pas être là
            id:
                type: integer
                id: true
                generator:
                    strategy: AUTO
    # FIN
     
            userName:
                type: string
                length: 255
     
    # Si tu n'en a pas besoin tu peux supprimer la ligne ci-dessous.
        lifecycleCallbacks: {  }
    au propre ça te donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Symfony\TestBundle\Entity\User\Post:
        type: entity
        table: post
        id:
            id:
                type: integer
                generator: { strategy: AUTO }
        fields:
            userName:
                type: string
                length: 255
    Tu retrouves tout cela dans la documentation de Symfony2, va falloir que tu t'y penches un peu plus (ou bien vérifier tes lignes de codes) : http://symfony.com/doc/current/book/doctrine.html

    Petite remarque : je sais pas si c'est pour tester Symfony, mais le namespace Symfony dans le dossier "src" me laisse dubitatif. Je te conseillerai de mettre App, Acme, MonApp, ou autre chose que Symfony.
    Petite remarque 2 : tu veux vraiment mapper une entité qui se trouve dans le dossier Symfony/TestBundle/Entity/User/Post.php ou une entité qui se trouve dans Symfony/TestBundle/Entity/Post.php ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Le mapping de l'entité a été créé par la commande doctrine:generate:entity.

    On peut donc penser qu'on peut faire confiance au code généré par symfony.

    Cela ne change rien cependant au problème. Peut être que Symfony ne détecte pas l'entity et qu'il faut lui préciser le chemin? Ca arrive?

  9. #9
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Citation Envoyé par Symfony29 Voir le message
    Le mapping de l'entité a été créé par la commande doctrine:generate:entity.

    On peut donc penser qu'on peut faire confiance au code généré par symfony.
    Autant pour moi, je passe par des fichiers XML de mon côté.

  10. #10
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Citation Envoyé par Symfony29 Voir le message
    Le mapping de l'entité a été créé par la commande doctrine:generate:entity.

    On peut donc penser qu'on peut faire confiance au code généré par symfony.

    Cela ne change rien cependant au problème. Peut être que Symfony ne détecte pas l'entity et qu'il faut lui préciser le chemin? Ca arrive?
    1. Vérifie le namespace de ton entité
    2. Vérifie que dans ton fichier tu as bien la même quand tu déclares le nom de l'entité
    3. Essaie peut-être de mettre ton entité directement dans le dossier Entity et pas dans un sous dossier Entity/User. Je dis ça parce que j'ai déjà remarqué le phénomène : si tu déclares par exemple une mapped-superclass qui appelle un fichier dans un dossier Acme\DemoBundle\Model\MyClass (donc un autre dossier que Entity, même en spécifiant le chemin dans le fichier de mapping en yml, xml ou autre, il cherchait toujours dans le dossier Entity).
    4. Ton fichier de mappgin se trouve bien dans "Resources/config/doctrine/" et que le fichier s'appelle bien "Post.orm.yml"

  11. #11
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Je viens de faire un test chez moi de ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Path du fichier src/Acme/DemoBundle/Entity/User/Test.php
    namespace Acme\DemoBundle\Entity\User;
     
    class Test {
        protected $id;
     
        public function getId() {
            return $this->id;
        }
    }
    Pour le mapping file (désolé c'est en XML) :
    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
     
    <!-- src/Acme/DemoBundle/Resources/config/doctrine/Test.orm.xml -->
    <?xml version="1.0" encoding="UTF-8"?>
    <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
    	http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
     
    	<entity name="Acme\DemoBundle\Entity\User\Test" table="test_pouet">
     
    		<id name="id" type="integer" column="id">
                          <generator strategy="AUTO"/>
    		</id>
     
    	</entity>
     
    </doctrine-mapping>
    La commande doctrine:schema:validate me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Doctrine\Common\Persistence\Mapping\MappingException]
    Class 'Acme\DemoBundle\Entity\Test' does not exist
    C'est bizarre, toi tu n'as pas de message... Et effectivement, il cherche automatiquement dans le namespace (dossier) Acme\DemoBundle\Entity.

    Lorsque je déplace mon entité directement dans entity : tout fonctionne.

    Donc, oublie le coup de mettre des entités dans des sous-dossiers dans le dossier Entity parce qu'il cherche automatiquement dedans (le dossier Entity).

  12. #12
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Citation Envoyé par vinmar Voir le message
    Je viens de faire un test chez moi de ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Path du fichier src/Acme/DemoBundle/Entity/User/Test.php
    namespace Acme\DemoBundle\Entity\User;
     
    class Test {
        protected $id;
     
        public function getId() {
            return $this->id;
        }
    }
    Pour le mapping file (désolé c'est en XML) :
    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
     
    <!-- src/Acme/DemoBundle/Resources/config/doctrine/Test.orm.xml -->
    <?xml version="1.0" encoding="UTF-8"?>
    <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
    	http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
     
    	<entity name="Acme\DemoBundle\Entity\User\Test" table="test_pouet">
     
    		<id name="id" type="integer" column="id">
                          <generator strategy="AUTO"/>
    		</id>
     
    	</entity>
     
    </doctrine-mapping>
    La commande doctrine:schema:validate me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Doctrine\Common\Persistence\Mapping\MappingException]
    Class 'Acme\DemoBundle\Entity\Test' does not exist
    C'est bizarre, toi tu n'as pas de message... Et effectivement, il cherche automatiquement dans le namespace (dossier) Acme\DemoBundle\Entity.

    Lorsque je déplace mon entité directement dans entity : tout fonctionne.

    Donc, oublie le coup de mettre des entités dans des sous-dossiers dans le dossier Entity parce qu'il cherche automatiquement dedans (le dossier Entity).
    On peut donc en conclure que même si tu spécifies le chemin complet vers le fichier comme ici "Acme\DemoBundle\Entity\User\Test" donc normalement src/Acme/DemoBundle/Entity/User/Test.php, Symfony/Doctrine ne cherche que dans src/Acme/DemoBundle/Entity. It's weird

  13. #13
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Par défaut
    Bonjour,

    Tu peux bien sûr mettre tes entités ailleurs : https://devandco.wordpress.com/2013/...entity-bundle/

  14. #14
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Est-ce que tu t'es débloqué ?

Discussions similaires

  1. No Metadata Classes to process
    Par hazem2410 dans le forum Doctrine2
    Réponses: 3
    Dernier message: 31/05/2013, 09h59
  2. [2005] Problème Process Full et Process Update
    Par jere59 dans le forum SSAS
    Réponses: 4
    Dernier message: 17/04/2012, 14h29
  3. [VS 2010] Classe métier et update
    Par DUCKY_ dans le forum C#
    Réponses: 2
    Dernier message: 07/03/2011, 09h07
  4. Réponses: 17
    Dernier message: 03/12/2004, 14h33

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