Cette manipulation est à faire en début de projet pour repartir d'une base existante.
Elle écrase tout ce qui existe et ne doit donc pas être faite en cours de développement.
Pour que la manipulation fonctionne, on doit au préalable :
> composer require symfony/orm-pack > composer require symfony/maker-bundle --dev
DATABASE_URL=mysql://<db_user>:<db_password>@127.0.0.1:3306/<db_name>
Comme indiqué dans la documentation (https://symfony.com/doc/current/doctrine/reverse_engineering.html), cette commande récupère 70 à 80% de la structure, mais pas :
Pour importer la structure, on utilisera :
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
Les entités sont créées dans le dossier défini par l'option –path (ici src/Entity).
La structure est importée sans les méthodes d'accès à la base de données.
Il faut donc regénérer l'application entière ce qui écrase tout l'existant avec :
php bin/console make:entity --regenerate App
L'importation ne génère pas les liens One-To-Many qui doivent être redéfinis manuellement.
Toutes les options spécifiques (actions en cascade ou autres) doivent être réécrites dans les classes générées.