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