Outils pour utilisateurs

Outils du site


doctrine4

Reverse Engineering d'une base avec Doctrine

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.

Prérequis

Pour que la manipulation fonctionne, on doit au préalable :

  • Disposer des outils doctrine :
    > composer require symfony/orm-pack
    > composer require symfony/maker-bundle --dev
  • Avoir défini les éléments de connexion dans le fichier .env
    DATABASE_URL=mysql://<db_user>:<db_password>@127.0.0.1:3306/<db_name>

Import de la structure

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 :

  • les associations inverses,
  • l'héritage,
  • les entités avec des clés étrangères comme clé primaire
  • les opérations sémantiques sur les associations telles que cascade ou les événements sur le cycle de vie (on drop, on create, etc))

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).

Génération des getters et setters

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

Finalisation

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.

doctrine4.txt · Dernière modification : 2020/07/29 20:22 de 127.0.0.1