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.

Recharger un modèle avec un verrou pessimiste

Pour recharger un modèle au sein d’une transaction tout en acquérant un verrou pessimiste, utilisez la méthode refreshForUpdate. Le modèle est rechargé avec un verrou FOR UPDATE.

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 4 septembre 2026