Skip to main content

Introduction

Laravel prend en charge officiellement les bases de données suivantes.
  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server
Vous utilisez la même configuration de connexion, que ce soit avec du SQL brut, le Query Builder ou l’ORM Eloquent.
Cette page couvre les prérequis de connexion. Pour les requêtes pratiques, consultez le Query Builder, pour la gestion de schéma les migrations, et pour le peuplement initial le seeding.

Configuration

Les paramètres de base de données sont centralisés dans config/database.php. Vous choisissez la connexion par défaut avec default et définissez les détails de chaque connexion dans connections.
Configurez au minimum les variables suivantes dans .env.
Avec SQLite, définissez DB_CONNECTION=sqlite et le chemin de DB_DATABASE.

Séparation lecture / écriture

Pour séparer les lectures (SELECT) et les écritures (INSERT / UPDATE / DELETE) sur des hôtes différents, configurez read et write dans la même connexion.
Avec sticky à true, les lectures effectuées après une écriture dans la même requête sont bloquées sur la connexion write.
En cas de latence de réplication, activer sticky réduit le risque de lire des données obsolètes juste après une écriture.

Éviter les lectures obsolètes dans les requêtes suivantes

sticky ne s’applique qu’au sein d’une même requête. Pour lire les données fraîchement écrites également dans les requêtes suivantes de la même session, ajoutez le middleware PreventStaleDatabaseReads au groupe de middleware web.
Le middleware enregistre dans la session les écritures sur la connexion de base de données par défaut. Par défaut, les requêtes effectuées dans les 2 secondes suivant une écriture utilisent la connexion write pour les lectures sur cette connexion. Pour modifier cette durée, utilisez for.
Ce middleware dépend de la session : il doit donc s’exécuter après le middleware StartSession. Il n’affecte pas les lectures des autres sessions ni des autres connexions de base de données.

Lire temporairement depuis la connexion d’écriture

Pour forcer les lectures d’un callback sur la connexion write, utilisez la méthode usingWritePdo de la connexion.
Cela s’applique aussi aux requêtes Eloquent et aux relations qui utilisent la même connexion dans le callback. À la fin du callback, le paramètre de lecture de la connexion est restauré, qu’une exception ait été levée ou non.

Connexion PostgreSQL avec pool

Si vous utilisez un service PostgreSQL managé fournissant un pooling de connexions en mode transaction (type PgBouncer), configurez les options pooled et direct.
Avec pooled activé, Laravel effectue le routage automatiquement. Pour utiliser explicitement la connexion direct dans le code, ajoutez le suffixe ::direct au nom de connexion.

Connexions multiples

Vous pouvez définir plusieurs connexions dans config/database.php et basculer avec DB::connection().

Exécution de requêtes SQL

La façade DB propose des méthodes dédiées par type de requête.
Ne concaténez jamais les entrées utilisateur directement dans une chaîne SQL. Utilisez toujours des paramètres liés pour éviter les injections SQL.

Écoute des requêtes

Pour suivre le SQL exécuté, enregistrez DB::listen() dans la méthode boot() d’un service provider.

Transactions

Pour traiter plusieurs mises à jour comme une unité atomique, utilisez DB::transaction(). En cas d’exception, Laravel effectue automatiquement le rollback.
Si vous avez besoin de retenter en cas de deadlock, spécifiez attempts.
Pour un contrôle manuel, utilisez beginTransaction / rollBack / commit.

Prochaines étapes

Query Builder

Découvrez comment construire des requêtes en toute sécurité avec la configuration de connexion.

Migrations

Apprenez à versionner le schéma de votre base de données.

Seeding

Alimentez votre base avec des données de développement et de test de manière reproductible.
Dernière modification le 20 octobre 2026