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.

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 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.
  • 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.

Ressources

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é :
    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 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.