parent
dc2eaf271d
commit
d4edb750a6
@ -0,0 +1,102 @@
|
|||||||
|
# TP3: Base de données avec Doctrine
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
-
|
||||||
|
|
||||||
|
## Consignes
|
||||||
|
|
||||||
|
- Durée : 2 heures
|
||||||
|
- Tous vos projets `Symfony` sont à placer votre dossier `~/public_html`.
|
||||||
|
- Utilisez le serveur `londres.iut.local` pour tester vos pages et non la
|
||||||
|
commande `symfony server:start`.
|
||||||
|
|
||||||
|
## Ressources
|
||||||
|
|
||||||
|
- Documentation de Symfony sur les services :
|
||||||
|
[https://symfony.com/doc/5.x/doctrine.html](https://symfony.com/doc/5.x/doctrine.html)
|
||||||
|
- Nous allons continuer notre réseau social nommé `TweetTok` où les messages sont nommés des `Twok`.
|
||||||
|
- 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`.
|
||||||
|
- **<span style="color:red">Attention!</span> L'utilisation de la commande
|
||||||
|
`symfony console make:crud` est interdite pour le moment !</span>**
|
||||||
|
|
||||||
|
## Partie 1: Import des Twoks existants avec Doctrine (30 min)
|
||||||
|
|
||||||
|
1. **Configuration de la base de données :**
|
||||||
|
- Assurez-vous que Doctrine ORM est bien installé :
|
||||||
|
```bash
|
||||||
|
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 (avec `SQLite` dans un premier temps).
|
||||||
|
|
||||||
|
2. **Création de l'entité `Twok` :**
|
||||||
|
Lors du précédent TP, nous avions utilisé un service nommé `TwokManager`
|
||||||
|
pour géger les `Twoks`. 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.
|
||||||
|
|
||||||
|
3. **Import des précédents messages** : Félicitations ! Vous avez maintenant
|
||||||
|
une table `Twok` toute vide et plusieurs `Twoks` stockés dans votre fichier
|
||||||
|
JSON.
|
||||||
|
- Mofifiez votre service `TwokManager` pour écrire en BDD les `Twok`
|
||||||
|
contenus dans le fichier JSON. Pour cela aidez vous de la fonction
|
||||||
|
[`Serializer`](https://symfony.com/doc/current/serializer.html) de
|
||||||
|
Symfony.
|
||||||
|
- Validez avec `psql` que vos `Twoks` sont maintenant bien en BDD.
|
||||||
|
- Nettoyez le code existant, nous n'avons plus besoin du fichier JSON.
|
||||||
|
|
||||||
|
## Partie 2: Recherche avancée (30 min)
|
||||||
|
|
||||||
|
1. 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)
|
||||||
|
|
||||||
|
1. 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 +)
|
||||||
|
|
||||||
|
1. **Gestion des hashtags :**
|
||||||
|
- Ajoutez un champ `hashtag` dans la table `Twok` 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.
|
||||||
|
|
||||||
|
2. **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.
|
||||||
|
|
||||||
|
3. **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.
|
||||||
|
- Empêchez un
|
||||||
|
|
||||||
|
4. **Compteur d'impression des `Twoks` :**
|
||||||
|
- Ajouter un champ `nm_prints` dans la table `Twok` et incrémentez sa valeur
|
||||||
|
à chaque fois que le `Twok` est affiché.
|
||||||
|
|
||||||
|
## Pour aller plus loin
|
||||||
|
|
||||||
|
- Implémentez des jeux de test pour vos codes.
|
Binary file not shown.
Loading…
Reference in new issue