Documentation · Chapitre 07

Rendre reading-list
vraiment persistante.

L’atelier remplace la session par SQLite tout en conservant les routes, la validation, la sécurité et les vues déjà construites.

Nous remplaçons le stockage temporaire de reading-list par SQLite, sans changer l’objectif de l’application.

Plan de transformation

  1. Installez Data avec le pilote sqlite.
  2. Générez Book comme entité persistante.
  3. Créez et appliquez create_books_table.
  4. Ajoutez AppDbContext et injectez-le dans BookController.
  5. Remplacez les lectures et écritures de session par DbSet.

Les commandes

phpaml — zsh
aml install data --driver sqlite
aml make:entity Book
aml make:migration create_books_table
aml data:migrate
aml data:status
aml test

Ce qui change dans le contrôleur

AVANT — SESSION

$books = $this->session->get('books', []);

APRÈS — DATA

$books = $this->db->books()->orderBy('title')->all();

La vue reçoit toujours books. Le changement de stockage reste donc dans la couche responsable des données; le HTML n’a pas besoin de connaître SQLite.

Plan de vérification

Créer puis rechargerle livre reste visible
Nouvelle session navigateurmême catalogue
Identifiant absent404
Migration relancéeaucun doublon
Titre invalideaucune ligne créée

Limites à comprendre

SQLite convient très bien à cet atelier. Une forte écriture concurrente ou plusieurs serveurs peuvent justifier MySQL, MariaDB ou PostgreSQL. Le choix du moteur dépend du besoin mesuré, pas d’une mode.

EN RÉSUMÉ

Ce qu’il faut retenir

  • Une entité représente une ligne sous forme d’objet PHP.
  • Une migration versionne la structure de la base.
  • DbSet fournit lecture, recherche, ajout, modification et suppression.
  • DbContext peut suivre les changements et les enregistrer en transaction.
  • Les vues restent indépendantes du moteur de stockage.