Par Valentin Brosseau / @c4software
Votre site Laravel fonctionne… mais il oublie tout à chaque rechargement.
Il nous faut une base de données.
SELECT, INSERT…).Object Relational Mapping :
Celui de Laravel s'appelle Eloquent.
$todos = Todo::all();À votre avis, quelle requête SQL est exécutée derrière ?
SELECT * FROM todos;Eloquent génère le SQL pour vous (et le protège des injections).
D'accord, mais la table todos…
Qui l'a créée ? Et comment vos collègues auront la même ?
La structure de la base décrite en PHP, dans le projet :
Schema::create('todos', function (Blueprint $table) {
$table->id();
$table->string('texte');
$table->boolean('termine')->default(false);
$table->timestamps();
});php artisan migrate transforme ça en vraie table.
migrate, il a la même base.Fini le « chez moi ça marche ».
Modèle : Todo (singulier)
Table : todos (pluriel)En respectant la convention, Laravel fait le lien tout seul.
Depuis Laravel 11 : SQLite par défaut.
Toute la base dans un fichier database/database.sqlite. Zéro configuration, parfait pour développer.
Todo::create(['texte' => 'Réviser']); // Create
Todo::all(); // Read
$todo->termine = true; $todo->save(); // Update
$todo->delete(); // DeletePas une ligne de SQL.
Un filtre exécuté avant le contrôleur :
Requête → Middleware → Contrôleur
↓
(ou redirection)Écrit une fois, appliqué à toutes les routes que vous voulez.
Place au TP 🚀