Einführung
Laravel unterstützt offiziell die folgenden Datenbanken:- MySQL / MariaDB
- PostgreSQL
- SQLite
- SQL Server
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 inconfig/database.php gebündelt.
Über default legen Sie die Standardverbindung fest, in connections konfigurieren Sie die einzelnen Verbindungen im Detail.
.env sollten mindestens folgende Werte gesetzt sein:
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.
sticky auf true werden Leseoperationen innerhalb desselben Requests nach einem Schreibvorgang auf die Schreibverbindung geleitet.
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.
for an.
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 MethodeusingWritePdo der Verbindung.
Pooled PostgreSQL-Verbindungen
Wenn Sie einen verwalteten PostgreSQL-Dienst mit transaktionsbasiertem Connection-Pooling verwenden (etwa PgBouncer), konfigurieren Sie die Optionenpooled und direct.
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 inconfig/database.php mehrere Verbindungen definieren und mit DB::connection() zwischen ihnen wechseln.
SQL-Abfragen ausführen
DieDB-Facade stellt für jeden Query-Typ eine dedizierte Methode bereit.
Query Listening
Um ausgeführte SQL-Statements nachvollziehen zu können, registrieren Sie imboot() eines Service Providers einen Listener über DB::listen().
Transaktionen
Um mehrere Änderungen als atomare Einheit zu behandeln, verwenden SieDB::transaction().
Tritt eine Ausnahme auf, führt Laravel automatisch einen Rollback aus.
attempts an.
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.