, , , , ,

L’ORM Doctrine avec Symfony 3

Configurer l'ORM Doctrine pour Symfony

Découvrir la console Doctrine

Une fois la base de données configurée dans votre environnement Symfony, vous pouvez vous amuser avec la console Symfony afin de gérer votre base de données.

La console Doctrine

La console est un outil magique pour le développeur, sans quitter le terminal, vous pouvez créer une base de données, lancer la création du schéma, charger des données de tests et exécuter des requêtes SQL.

Note

Après la version 2.8 de Symfony, la console se trouve dans le dossier bin/console

et

non app/console.

Voici les commandes les plus utiles :

La base

$ cd dossierDeBaseDuProjetSymfony

$ bin/console

$ bin/console cache:clear

Travailler avec la BD

# Supprime la BD
$ bin/console doctrine:database:drop

# Crée la BD
$ bin/console doctrine:database:create

# Crée les tables
$ bin/console doctrine:schema:create

# Force la mise à jour du schéma
$ bin/console doctrine:schema:update --force

# Affiche le SQL
$ bin/console doctrine:schema:update --dump-sql

Charger les données de tests (fixtures)

$ bin/console doctrine:fixtures:load

Exécuter une requête SQL

$ bin/console doctrine:query:sql "select * from nomTable"

Générer une entité

$ bin/console doctrine:generate:entity

Créer une entité Doctrine

Afin d’accélérer votre travail de développeur, il est possible de créer de nouvelles entités Doctrine à partir du terminal. Vous pouvez ainsi définir le nom de la nouvelle entité et spécifier les champs de cette entité. Voici quelques exemples :

Créer une entité en mode interactif avec Doctrine

S’il est parfois difficile de se souvenir de la syntaxe complète pour lancer la création d’une entité en mode no-interactive (section suivante), il est possible d’utiliser le mode interactif. On vous posera les questions utiles afin de créer votre entité.

$ bin/console generate:doctrine:entity
   Welcome to the Doctrine2 entity generator
   This command helps you generate Doctrine2 entities.
   First, you need to give the entity name you want to generate.
   You must use the shortcut notation like AcmeAppBundle:Post.
   The Entity shortcut name:

Le nom suivant indique que l’entité sera créée dans le bundle AppBundle :

AcmeAppBundle:Fav

Correspond au dossier /src/Acme/AppBundle/

Entité généré avec Doctrine

Une fois le processus de génération terminé, il est proposé d’inspecter le code PHP généré dans le dossier /src/NomProjet/NomBundle/Entity

Créer une entité en mode no-interactive

Note

Les commandes suivantes doivent être exécutées sur une seule ligne.

Des retours de chariot ont été ajoutés pour faciliter la lisibilité.

Créer l’entité Fav (favorites)

$ bin/console generate:doctrine:entity --no-interaction 
--entity=AcmeAppBundle:Fav 
--fields="movieId:integer userId:integer status:integer 
          createdAt:datetime updatedAt:datetime"
--format=annotation
Note

Le nom suivant indique que l’entité sera créée dans le bundle AppBundle. AcmeAppBundle:Fav(Cela correspond au dossier suivant : /src/Acme/AppBundle/)

Créer l’entité Like

$ bin/console generate:doctrine:entity --no-interaction 
--entity=AcmeAppBundle:Like 
--fields="movieId:integer userId:integer createdAt:datetime updatedAt:datetime"
--format=annotation
Note

Certains mots-clés sont réservés!

Créer l’entité Questionnaire

$ bin/console generate:doctrine:entity 
    --no-interaction 
    --entity=AcmeAppBundle:Questionnaire 
    --fields="title:string(length=100) body:text" 
    --format=annotation
Entity generation
Generating the entity code: OK
You can now start using the generated code!

Définir des relations entre les entitésDoctrine

Doctrine nous offre la possibilité de créer des relation entre les entités. Plusieurs options sont disponibles. Afin d’en savoir plus, il est recommandé de faire un peu de lecture. Voici l’article proposé sur OpenClassRooms: Les relations entre entités avec Doctrine2. Vous y découvrez plusieurs types de relations tels :

Remplir la base de données

L’étape suivante est de mettre en place un système de fixtures. Ces fixtures nous permettrons de remplir la base de données avec des données de test. Donc, définir le contenu de la BD dans un état connu.

Oui, c’est maintenant le temps de créer des données de tests!

Facebook Comments

0 réponses

Laisser un commentaire

Rejoindre la discussion?
N’hésitez pas à contribuer !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.