You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
4.8 KiB
107 lines
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](https://creativecommons.org/licenses/by-nc-sa/4.0/).
|
|
> 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
|
|
commande `symfony server:start`.
|
|
- 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! L'utilisation des commandes `symfony
|
|
console make:crud` et `symfony console make:form` sont interdites pour le
|
|
moment ! L'objectif est de comprendre ce qu'elles font.</span>**
|
|
|
|
## Ressources
|
|
|
|
- Documentation de Symfony sur Doctrine :
|
|
[https://symfony.com/doc/5.x/doctrine.html](https://symfony.com/doc/5.x/doctrine.html)
|
|
|
|
## 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/components/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.
|
|
|
|
4. **Compteur d'impression des `Twoks` :**
|
|
- Ajouter un champ `nb_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.
|