Skip to main content

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 Artisan make:model.
Pour créer aussi une migration, utilisez -m.
Le modèle est créé dans 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 automatiquement created_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.
Un $guarded vide autorise l’assignation de toutes les colonnes. Si vous passez directement des données utilisateur, des colonnes non prévues risquent d’être modifiées. Préférez lister explicitement les colonnes autorisées avec $fillable.

Flux d’exécution d’une requête Eloquent

Voici comment une requête telle que User::where()->get() est exécutée en interne.

CRUD de base

Lecture (Read)

Récupérer tous les enregistrements.
Avec conditions.

Création (Create)

create insère un enregistrement (nécessite $fillable).
Vous pouvez aussi créer une instance et lui assigner les valeurs.

Mise à jour (Update)

Récupérez le modèle, modifiez-le, puis save.
update met à jour plusieurs colonnes en un appel.
Mise à jour en masse selon un critère.

Suppression (Delete)

Suppression directe par ID.

Méthodes de requête de base

Exemple : contrôleur manipulant le modèle Post

Exemple de contrôleur pour la table posts créée par une migration.
Type-hinter Post $post dans une méthode de contrôleur active le route model binding : Laravel récupère automatiquement le modèle depuis le paramètre de route. Vous n’avez plus besoin d’écrire vous-même Post::findOrFail($id).

Cycle de vie des événements de modèle

Voici les événements déclenchés lors de save(). 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.
Dernière modification le 13 juillet 2026