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