2 - Live Coding : Gérer la base de données avec Symfony 4

Temps de lecture : 12 minutes environ.

Dans ce deuxième article, nous allons créer et structurer la base de données en utilisant Symfony.

Nous allons effectuer ces actions en utilisant le terminal et les commandes intégrées à Symfony.

Structure de la base de données

Pour gérer notre blog, nous aurons besoin de stocker différentes informations en suivant les règles suivantes :

  • Chaque article pourra appartenir à plusieurs catégories
  • Chaque article pourra avoir plusieurs mots-clés
  • Chaque article pourra avoir plusieurs commentaires
  • Chaque catégorie pourra être attribuée à plusieurs articles
  • Chaque mot clé pourra être affecté à plusieurs articles

En suivant ces règles, nous arrivons au modèle de données ci-dessous

Nous avons 5 tables :

  • articles : contiendra tous les articles
  • users : contiendra les identifiants des auteurs
  • categories : contiendra la liste des catégories
  • mots_cles : contiendra les mots clés
  • commentaires : contiendra les commentaires

Les relations entre les tables sont les suivantes :

  • Un à plusieurs (OneToMany)
    • Entre la table articles et la table users
    • Entre la table users et la table articles
  • Plusieurs à plusieurs (ManyToMany)
    • Entre la table articles et la table categories
    • Entre la table articles et la table mots_cles

Création de la base de données

Pour créer la base de données, Symfony nous met à disposition une commande de terminal par l'intermédiaire de l'extension Doctrine (préinstallée par défaut)

Les informations de connexion s'inscrivent dans le fichier .env situé à la racine du projet

Voici la ligne de ce fichier qui correspond à cette connexion

DATABASE_URL=mysql://root@localhost:3306/monblog
  • root : identifiant de l'utilisateur. Si un mot de passe existe, remplacer root par root:pass
  • localhost : serveur de base de données
  • monblog : nom de la base de données

Après avoir mis à jour le fichier .env, nous procédons à la création de la base de données en entrant la commande suivante

php bin/console doctrine:database:create

Création des tables

Pour créer les tables, nous allons nous servir d'une fonctionnalité de Doctrine appelée migrations

Les migrations sont des fichiers PHP qui contiennent des requêtes SQL permettant de créer, modifier ou supprimer des tables.

Symfony nous permet de crées ces migrations de façon automatisée.

Pour commencer, nous allons créer les objets PHP (Classes) correspondant à chacune de nos tables. Il s'agit des entités (Entity). Chacune de ces entités correspond à une table et contiendra les propriétés correspondant aux champs, et les Getters et Setters permettant de les lire et les écrire.

Création de l'entité

Pour créer une entité, nous exécutons la commande suivante :

php bin/console make:entity

Prenons l'exemple des catégories, nous allons répondre à différentes questions afin de créer l'entité.

Nous avons 3 champs dans cette table

  • id : créé automatiquement
  • nom : chaîne de 100 caractères maximum
  • slug : chaîne de 255 caractères maximum

Voici les réponses aux différentes questions

La création de l'entité a généré 2 fichiers PHP.

Le fichier src/Entity/Categories.php contient les propriétés, les Getters et Setters.

Le fichier src/Repository/CategoriesRepository.php contiendra les requêtes personalisées.

Nous verrons ces fichiers en détails dans un prochain article.

Lors de l'assistant nous devons renseigner le type de champs, voici une liste des principaux types, la liste complète est disponible en tapant ? comme réponse à la question

  • string : chaine de caractères (limitée à 255)
  • text : texte de plus de 255 caractères
  • boolean : booléen (vrai, faux)
  • integer : entier
  • float : nombre décimal
  • relation : relation avec une autre table
  • datetime : date et heure

Création de la migration

Après avoir créé ou modifié les entités, nous allons créer le fichier de migration qui contiendra toutes les requêtes SQL relatives à la création ou la modification des tables.

Pour créer la migration, nous devons exécuter la commande ci-dessous

php bin/console make:migration

Cette commande génère un fichier dans le dossier src/Migrations

Une fois ce fichier créé, nous exécutons les requêtes au moyen de la commande

php bin/console doctrine:migrations:migrate

Quand cette commande est exécutée, les tables correspondantes sont créées dans la base de données.

Dans le chapitre suivant, nous traiterons des relations entre les tables.

Obtenir de l'aide

Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat

2 - Live Coding : Gérer la base de données avec Symfony 4
Article publié le - Modifié le

Catégories : MVC Tutoriel Symfony

Mots-clés : Tutoriel Base de données Models MVC MySQL Symfony bdd livecoding

Partager : Partager sur Facebook Partager sur Twitter Partager sur LinkedIn