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.
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.
Pingback: Laravel Datenbank: MySQL, MongoDB, MSSQL, was sollte man nutzen? - Laravel-Entwickler.de