Quantcast
Channel: Le Coin Du Codeur » mapping
Viewing all articles
Browse latest Browse all 3

Générer des entités Symfony2 à partir d’une base de données existante

$
0
0

Lors du démarrage d’un nouveau projet, la partie conception de la base de données est toujours une étape un peu longue et répétitive, qui nécessite plusieurs sessions de travail, afin d’obtenir un résultat complet et cohérent. Vient ensuite la mise en place des objets correspondant aux tables et de toute la mécanique permettant les liaisons entre tous ces éléments

Depuis quelques temps maintenant, pour plusieurs de mes projets, j’ai fait le choix d’utiliser le framework Symfony2 pour toute la structure qu’il offre autour de l’architecture MVC et du mapping de base de données à l’aide de Doctrine2.

Les fonctionnalités apportées sont très pratiques et permettent de s’affranchir de l’étude de la base au profit d’un raisonnement orienté objet

 

Bon, en pratique il arrive souvent qu’on cherche à attaquer une base de données existante, conçue par d’autres personnes, et surtout, ne correspondant pas exactement à ce qu’on souhaite en faire.

Et bien heureusement pour nous, Symfony2 et son ORM Doctrine2 sont là pour nous aider. D’autres personnes avant nous ont eu ce soucis là et ont pensé à des commandes qui vont nous permettre de mapper une base de données existante et de générer nos entités à partir de tables déjà crées.

 

Avant toute chose, vous devez vous assurer que les paramètres de connexion à votre base de données sont correctement renseignés dans le fichier de configuration config.yml de Synfony2.

Nous allons maintenant mapper notre base de données dans un fichier XML qui sera stocké dans le répertoire ORM de notre bundle de test.

php app/console doctrine:mapping:convert xml ./src/Test/ReverseBundle/Resources/config/doctrine/metadata/orm --from-database --force [--em="MA_BASE_TEST"]

REMARQUE    Le dernier paramètre –em vous permet de préciser quel EntityManager doit être utilisé pour ce mapping. Cela n’a de sens que dans le cas d’une utilisation multi-bases.

Nous allons ensuite importer les informations de mapping sous forme d’annotations. Cela aura pour effet de créer une classe PHP par table avec toutes les caractéristiques des champs ajoutées en annotations.

php app/console doctrine:mapping:import TestReverseBundle annotation

Enfin, il ne reste plus qu’à générer les entités à partir des annotations. Cela va compléter les classes d’entités créées précédemment avec les accesseurs et mutateurs (getters and setters) correspondant.

php app/console doctrine:generate:entities TestReverseBundle

Voilà votre base de données est à présent mappée et vos entités sont utilisables.

 

A bientôt !


Viewing all articles
Browse latest Browse all 3

Latest Images





Latest Images