Laravel QuickWin: Laravel Datenbank konfigurieren

aktualisiert am 26. Januar 2019, erstellt am 28. Juni 2017 von Dirk Helbert in Laravel QuickWin
Laravel Datenbank konfigurieren

Im Rahmen meiner Laravel QuickWin Reihe zeige ich dir heute die Laravel Datenbank Konfiguration. Dabei erfährst du die verschiedenen Konfigurationen für die lokale Entwicklung, für das Testing und den produktiven Einsatz.

Zuerst erstelle ich ein neues Projekt mit

laravel new laradb

Du kannst dir dazu auch mein QuickWin Artikel Neue Laravel Anwendung initialisieren anschauen.

Hol dir jetzt mein kostenloses E-Book
Geben Sie Ihre Email Adresse ein und klicken Sie auf den Knopf "Sofort Zugang erhalten".
Ich stimme zu, dass meine Daten beim Newsletter Provider Mailchimp gespeichert werden. ( Datenschutzerklärung und Datenschutz Mailchimp )
Mit der Anforderung des eBooks meldest du dich zu meinem kostenlosen E-Mail Newsletter mit relevanten Informationen zur Webentwicklung sowie meinen Büchern und Leistungen an.

Laravel Datenbank Adapter

Von Haus aus unterstützt Laravel vier verschiedene Datenbank Systeme

  • MySQL
  • PostgreSQL
  • SQLite
  • SQL Server

Ich arbeite hauptsächlich mit MySQL und SQLite. Mit den anderen beiden Datenbank Systemen bin ich bisher kaum in Berührung gekommen. Wichtig für dich ist nur, dass du weisst, dass sie mit Laravel zusammen funktionieren. Mehr dazu auch in der Dokumentation von Laravel.

Datenbank Konfiguration

Die Datenbank wird in Laravel in der /config/database.php vorgenommen. Hier findest du das überall genutzte Konfigurationsarray.

Als erstes findest du hier 'default' => env('DB_CONNECTION', 'mysql'). Hier wird die Default Connection definiert. Das bedeutet nichts anderes, als das die Default Einstellungen aus dem 'connections' => 'mysql' gelesen wird.

Hier ein Auszug des Connections Array

'connections' => [
    ...
    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),            
        'database' => env('DB_DATABASE', 'forge'),             
        'username' => env('DB_USERNAME', 'forge'),             
        'password' => env('DB_PASSWORD', ''),             
        'unix_socket' => env('DB_SOCKET', ''),             
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',             
        'strict' => true,
        'engine' => null],
    ... 

Das sind auch gleichzeitig die Standart Werte für die Datenbank Konfiguration. Die env() Hilfsfunktion liest aus dem /.env die Einstellungen. Falls diese Einstellung im /.env nicht vorhanden ist, wird der übergebene Default Wert übernommen. Bei 'host' => env('DB_HOST', '127.0.0.1') würde die Einstellung für DB_HOST aus dem /.env gelesen werden. Ist sie dort nicht vorhanden, wird 127.0.0.1 genommen.

Eigene Datenbank Konfiguration

Du kannst das Connections Array auch einfach um deine eigene Konfiguration erweitern.

Hier ein Beispiel

'connections' => [
    ...
    'userdb' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),   
        'port' => env('DB_PORT', '3306'),    
        'database' => env('DB_DATABASE', 'forge'),             
        'username' => env('DB_USERNAME', 'forge'),             
        'password' => env('DB_PASSWORD', ''),             
        'unix_socket' => env('DB_SOCKET', ''),             
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',             
        'strict' => true,
        'engine' => null,         
    ],
    ... 

Um diese Verbindung auch nutzen zu können, kannst du $users = DB::connection('userdb')->select('select * from users'); nutzen.

Datenbankverbindungen je nach System

In der Regel wirst du zumindest ein lokales und ein Produktiv System nutzen. Ich hoffe zumindest, dass du nicht alles direkt im Produktiv System entwickelst. Daneben könnte auch noch ein Staging und ein Test System existieren.

Jedes dieser Systeme hat eigene Datenbank Einstellungen. Oft gibt es lokal nur den root Datenbank User ohne Passwort. Für ein lokales System ist das, meiner Meinung nach, auch ok. Das hat im Produktiv System nichts zu suchen. Daher benötigen wir hier andere Einstellungen.

Mit Laravel ist das super easy. Die /.env Datei wird niemals auf die anderen Systeme übertragen. Es darf auch nicht in der Versionskontrolle (Git) eingecheckt sein. Somit muss für jedes System eine individuelle /.env erzeugt werden. Sie beinhaltet dann die wichtigsten Laravel Einstellungen.

Fazit

Laravel bietet einige Möglichkeiten sich mit einer Datenbank zu verbinden. Und das auf einem sehr einfachen Weg. Du wirst mit Sicherheit die für dich perfekte Möglichkeit finden. Wenn du Fragen oder Anregungen hast, dann hinterlass doch einfach unten einen Kommentar.

1 Kommentare zu “Laravel QuickWin: Laravel Datenbank konfigurieren”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert