Qu’est-ce qu’Eloquent ORM
Laravel inclut Eloquent, un ORM (object-relational mapper). Eloquent facilite le dialogue avec la base et implémente le pattern ActiveRecord. Avec Eloquent, vous créez une classe « modèle » pour chaque table de la base. Le modèle permet de récupérer, insérer, mettre à jour et supprimer des enregistrements.Avant d’utiliser Eloquent, configurez la connexion dans
config/database.php.
Par défaut, les variables DB_* du .env sont utilisées.Créer un modèle
Utilisez la commande Artisanmake:model.
-m.
app/Models.
Correspondance modèle / table
Eloquent déduit le nom de la table à partir du nom de classe : snake_case au pluriel.
Si le nom ne suit pas cette convention, précisez
$table explicitement.
Timestamps
Par défaut, Eloquent gère automatiquementcreated_at et updated_at.
Ajoutez $table->timestamps() à la migration pour bénéficier du remplissage automatique lors des enregistrements et mises à jour.
Pour désactiver cette gestion automatique, mettez $timestamps à false.
Protection contre l’assignation en masse
Pour utiliser les méthodes de création en masse, configurez la protection.fillable
Indiquez les colonnes autorisées via$fillable.
guarded
À l’inverse,$guarded indique les colonnes interdites.
Flux d’exécution d’une requête Eloquent
Voici comment une requête telle queUser::where()->get() est exécutée en interne.
CRUD de base
Lecture (Read)
Récupérer tous les enregistrements.Création (Create)
create insère un enregistrement (nécessite $fillable).
Mise à jour (Update)
Récupérez le modèle, modifiez-le, puissave.
update met à jour plusieurs colonnes en un appel.
Suppression (Delete)
Méthodes de requête de base
Exemple : contrôleur manipulant le modèle Post
Exemple de contrôleur pour la tableposts créée par une migration.
Cycle de vie des événements de modèle
Voici les événements déclenchés lors desave(). Ils diffèrent selon création ou mise à jour, mais saving et saved s’exécutent dans les deux cas.
Prochaines étapes
Migrations
Revoyez la création des tables utilisées par Eloquent via les migrations.