Solution de travail simple pour l'annotation d'option Symfony 2.7 et pour [/xml/yml] voir http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html
effectuez 3 commandes en 3 étapes :
$ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting"
(REMARQUE : si le nom de votre base de données est my_meeting
vous devrez le changer en MyMeeting
dans filter="MyMeeting"
pour que Doctrine trouve le nom de votre table. Cela est dû au fait que Doctrine supprime toujours les underscores et ajoute Camel-case à votre nom de table. Sinon, vous obtiendrez cette erreur : "Database does not have any mapping information".)
$ php app/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Meeting"
(REMARQUE : assurez-vous d'avoir namespace AppBundle\Entity;
comme ci-dessous dans votre fichier de classe Meeting.php comme ceci :
``
Si ce n'est pas le cas, ajoutez-le.)
où :
- AppBundle est exactement votre "AppBundle" dans Symfony 2.7
- Meeting est la table cible (sensible à la casse Camel-Case)
Pour VÉRIFIER, consultez ce répertoire :
src\AppBundle\Resources\config\doctrine\Meeting.orm.xml
ET ASSUREZ-VOUS de n'avoir que des fichiers .xml pour la table que vous voulez créer des fichiers de classe d'entité et aucun autre. Ensuite, exécutez la commande ci-dessous pour générer les méthodes get et set pour la classe d'entité que vous avez créée précédemment.
$ php app/console doctrine:generate:entities AppBundle:Meeting --no-backup
REMARQUE2 : Comme dernière étape, vous devez supprimer le fichier de base de données orm xml dans par exemple src\AppBundle\Resources\config\doctrine\VisitorData.orm.xml
Cela fonctionne très bien pour moi.
Pour plus d'explications, veuillez lire: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html
``
1 votes
De nombreuses personnes semblent encore avoir des problèmes avec une base de données qui a des tables sans clés primaires - '--filter' lit toujours ces tables, et échoue. Utilisez la configuration doctrine.yaml :
doctrine.dbal.connections.CONNECTION_NAME.schema_filter: ~^(table_prefix_name_).*~
ou utilisez l'expression régulière pour sauter des tables spécifiques