4.8 KiB
TP3.1: Base de données avec Doctrine
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Permission is explicitly granted to copy, distribute and/or modify this document for educational purposes under the terms of the CC BY-NC-SA license.
Objectifs
Les objectifs de ce TP sont :
- Comprendre et mettre en œuvre les opérations CRUD (Create, Read, Update, Delete) avec Doctrine dans une application Symfony.
- Avancer vers des fonctionnalités de recherche avancées.
- Ajouter plus de fonctionnalités de stockage en BDD et d'interactions entre les tables.
Consignes
- Durée : 2 heures
- De préférence, ne placez PAS vos projets
Symfony
dans votre dossier~/public_html
(les quotas explosent !). - N'utilisez PAS le serveur
londres.uca.local
pour tester vos pages mais la commandesymfony server:start
. - Nous allons continuer notre réseau social nommé
TweetTok
où les messages sont nommés desTwok
. - Lors du précédent TP, les
Twoks
étaient stockés en dur dans un fichier JSON. - Nous allons maintenant les stocker en BDD.
- Repartez donc de votre précédent projet
TweetTok
. - Attention! L'utilisation des commandes
symfony console make:crud
etsymfony console make:form
sont interdites pour le moment ! L'objectif est de comprendre ce qu'elles font.
Ressources
- Documentation de Symfony sur Doctrine : https://symfony.com/doc/5.x/doctrine.html
Partie 1: Import des Twoks existants avec Doctrine (30 min)
-
Configuration de la base de données :
- Assurez-vous que Doctrine ORM est bien installé :
composer require symfony/orm-pack composer require --dev symfony/maker-bundle
- Configurez le fichier
.env
de Symfony pour vous connecter à votre base de données (avecSQLite
dans un premier temps).
-
Création de l'entité
Twok
: Lors du précédent TP, nous avions utilisé un service nomméTwokManager
pour géger lesTwoks
. Nous allons maintenant les représenter sous forme d'une entité :- Utilisez la console Symfony pour générer une entité
Twok
et son registre correspondant. Faites en sorte que les champts soient les même que dans le fichier JSON du TP précédent (id
,author
,twok
,created_at
) en faisant attention aux types. - Créez la base de donnée, créez une migration et appliquez la.
- Utilisez l'outil
psql
pour vérifier la bonne exécution de votre migration.
- Utilisez la console Symfony pour générer une entité
-
Import des précédents messages : Félicitations ! Vous avez maintenant une table
Twok
toute vide et plusieursTwoks
stockés dans votre fichier JSON.- Mofifiez votre service
TwokManager
pour écrire en BDD lesTwok
contenus dans le fichier JSON. Pour cela aidez vous de la fonctionSerializer
de Symfony. - Validez avec
psql
que vosTwoks
sont maintenant bien en BDD. - Nettoyez le code existant, nous n'avons plus besoin du fichier JSON.
- Mofifiez votre service
Partie 2: Recherche avancée (30 min)
- Ajoutez les fonctionnalités suivantes à votre
TwokRepository
:- Recherche de Twok par ID;
- Recherche de Twok par auteur;
- Recherche de Twok par date (avant/après);
- Recherche de Twok par hashtag dans le champ
content
.
Partie 3: Un CRUD très rudimentaire (30 min)
- Implémentez dans votre controlleur les routes et les méthodes permettant de
lister, d'ajouter, d'éditer et supprimer des
Twoks
. Ne perdez pas de temps à comprendre comment utiliser Twig, ce sera pour une prochaine fois.
Partie 4: Fonctionnalités avancées (30 min +)
-
Gestion des hashtags :
- Ajoutez un champ
hashtag
dans la tableTwok
dans lequel vous ajoutez les différents hashtags de message lors de l'insertion. Attention, ne modifiez pas le contenu du message ! - Appliquez ce changement pour les messages existants.
- Ajoutez un champ
-
Gestion des utilisateurs :
- Ajoutez une entité
User
qui a comme champs :username
,real_name
,favorites
. - Remplissez la table avec les différents utilisateurs ayant déjà posté un
Twok
. - Pour chaque utilisateur choisissez deux ou trois messages favoris et
remplissez le champ
favorite
en adéquation.
- Ajoutez une entité
-
Vérifications avant insertion/modification :
- Avant d'insérer ou de modifier un Twok, assurez-vous que le contenu n'est pas vide et ne dépasse pas 180 caractères.
-
Compteur d'impression des
Twoks
:- Ajouter un champ
nb_prints
dans la tableTwok
et incrémentez sa valeur à chaque fois que leTwok
est affiché.
- Ajouter un champ
Pour aller plus loin
- Implémentez des jeux de test pour vos codes.