Skip to main content

Einführung

Laravel unterstützt offiziell die folgenden Datenbanken:
  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server
Sie können dieselbe Verbindungskonfiguration mit Raw SQL, dem Query Builder oder dem Eloquent ORM verwenden.
Diese Seite behandelt die Grundlagen zu Datenbankverbindungen. Praxisnahe Queries finden Sie beim Query Builder, Schema-Management bei Migrations und das Einspielen initialer Daten bei Seeding.

Konfiguration

Die Datenbank-Konfiguration ist zentral in config/database.php gebündelt. Über default legen Sie die Standardverbindung fest, in connections konfigurieren Sie die einzelnen Verbindungen im Detail.
In der .env sollten mindestens folgende Werte gesetzt sein:
Für SQLite setzen Sie DB_CONNECTION=sqlite und den Pfad in DB_DATABASE.

Trennung von Lese- und Schreibverbindung

Wenn Sie Lese- (SELECT) und Schreiboperationen (INSERT / UPDATE / DELETE) auf verschiedene Hosts verteilen möchten, konfigurieren Sie innerhalb derselben Verbindung read und write.
Mit sticky auf true werden Leseoperationen innerhalb desselben Requests nach einem Schreibvorgang auf die Schreibverbindung geleitet.
In Setups mit Replikations-Lag verringert sticky das Risiko, dass Sie direkt nach einem Schreibvorgang veraltete Daten lesen.

Veraltete Lesevorgänge auch in Folge-Requests verhindern

sticky wirkt nur innerhalb desselben Requests. Wenn Sie auch in nachfolgenden Requests derselben Session die gerade geschriebenen Daten lesen möchten, fügen Sie die Middleware PreventStaleDatabaseReads zur Middleware-Gruppe web hinzu.
Die Middleware speichert Schreibvorgänge auf die Standard-Datenbankverbindung in der Session. Standardmäßig verwenden Requests innerhalb von 2 Sekunden nach einem Schreibvorgang für Lesevorgänge auf dieser Verbindung die Schreibverbindung. Um die Dauer zu ändern, geben Sie for an.
Da diese Middleware von der Session abhängt, muss sie nach der Middleware StartSession ausgeführt werden. Lesevorgänge anderer Sessions oder anderer Datenbankverbindungen sind nicht betroffen.

Vorübergehend von der Schreibverbindung lesen

Um Lesevorgänge innerhalb eines Callbacks auf die Schreibverbindung zu fixieren, verwenden Sie die Methode usingWritePdo der Verbindung.
Das gilt auch für Eloquent- und Relationship-Abfragen, die innerhalb des Callbacks dieselbe Verbindung nutzen. Nach Ende des Callbacks wird die Lese-Einstellung der Verbindung wiederhergestellt, unabhängig davon, ob eine Exception aufgetreten ist.

Pooled PostgreSQL-Verbindungen

Wenn Sie einen verwalteten PostgreSQL-Dienst mit transaktionsbasiertem Connection-Pooling verwenden (etwa PgBouncer), konfigurieren Sie die Optionen pooled und direct.
Ist pooled aktiviert, kümmert sich Laravel automatisch um die richtige Zuordnung. Wenn Sie in Anwendungscode explizit die Direct-Verbindung nutzen möchten, hängen Sie den Suffix ::direct an den Verbindungsnamen.

Mehrere Datenbankverbindungen

Sie können in config/database.php mehrere Verbindungen definieren und mit DB::connection() zwischen ihnen wechseln.

SQL-Abfragen ausführen

Die DB-Facade stellt für jeden Query-Typ eine dedizierte Methode bereit.
Konkatenieren Sie niemals Nutzereingaben direkt in einen SQL-String. Verwenden Sie unbedingt Bindungsparameter, um SQL-Injection zu verhindern.

Query Listening

Um ausgeführte SQL-Statements nachvollziehen zu können, registrieren Sie im boot() eines Service Providers einen Listener über DB::listen().

Transaktionen

Um mehrere Änderungen als atomare Einheit zu behandeln, verwenden Sie DB::transaction(). Tritt eine Ausnahme auf, führt Laravel automatisch einen Rollback aus.
Ist ein automatischer Retry bei Deadlocks erforderlich, geben Sie attempts an.
Möchten Sie die Transaktion manuell steuern, verwenden Sie beginTransaction / rollBack / commit.

Nächste Schritte

Query Builder

Erfahren Sie, wie Sie Abfragen sicher mithilfe Ihrer Verbindungen zusammenstellen.

Migrations

Verwalten Sie das Schema Ihrer Datenbank versioniert.

Seeding

Bringen Sie Entwicklungs- und Testdaten reproduzierbar in Ihre Datenbank.
Zuletzt geändert am 20. Oktober 2026