Projects [SHOW]
Database
Einführung
Laravel macht die Interaktion mit Datenbanken über eine Vielzahl von Datenbank-Backends hinweg extrem einfach, indem er entweder Raw SQL, den flüssigen Query Builder und das Eloquent ORM verwendet. Derzeit unterstützt Laravel vier Datenbanken:
- MySQL
- PostgreSQL
- SQLite
- SQL SERVER
Die Datenbankkonfiguration für Ihre Anwendung finden Sie unter config/database.php. In dieser Datei können Sie alle Ihre Datenbankverbindungen definieren und festlegen, welche Verbindung standardmäßig verwendet werden soll. Beispiele für die meisten unterstützten Datenbanksysteme finden Sie in dieser Datei.
Standardmäßig ist die Laravel-Beispielumgebungskonfiguration bereit, mit Laravel Homestead verwendet zu werden, einer praktischen virtuellen Maschine, um die Laravel-Entwicklung auf Ihrem lokalen Computer durchzuführen. Sie können diese Konfiguration nach Bedarf für Ihre lokale Datenbank ändern.
SQLite ConfigurationNachdem Sie eine neue SQLite-Datenbank mit einem Befehl wie touch database/database.sqlite erstellt haben, können Sie Ihre Umgebungsvariablen so konfigurieren, dass sie auf diese neu erstellte Datenbank verweisen, indem Sie den absoluten Pfad der Datenbank verwenden:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
Um Fremdschlüsselbeschränkungen für SQLite-Verbindungen zu aktivieren, sollten Sie die Option foreign_key_constraints zu Ihrer Konfigurationsdatei config/database.php hinzufügen:
'sqlite' => [
// ...
'foreign_key_constraints' => true,
],
Configuration Using URLs
Normalerweise werden Datenbankverbindungen mit mehreren Konfigurationswerten wie Host, Datenbank, Benutzername, Passwort usw. konfiguriert. Jeder dieser Konfigurationswerte hat seine eigene entsprechende Umgebungsvariable. Das bedeutet, dass Sie bei der Konfiguration Ihrer Datenbankverbindungsinformationen auf einem Produktionsserver mehrere Umgebungsvariablen verwalten müssen.
Einige verwaltete Datenbankanbieter wie Heroku bieten eine einzige Datenbank "URL", die alle Verbindungsinformationen für die Datenbank in einer einzigen Zeichenkette enthält. Eine exemplarische Datenbank-URL kann etwa wie folgt aussehen:
mysql://root:password@127.0.0.1/forge?charset=UTF-8
Diese URLs folgen in der Regel einer Standardschemakonvention:
driver://username:password@host:port/database?options
Laravel unterstützt diese URLs als Alternative zur Konfiguration Ihrer Datenbank mit mehreren Konfigurationsoptionen. Wenn die Konfigurationsoption url (oder die entsprechende Umgebungsvariable DATABASE_URL) vorhanden ist, wird sie verwendet, um die Datenbankverbindung und die Anmeldeinformationen zu extrahieren.
Read & Write ConnectionsManchmal möchten Sie eine Datenbankverbindung für SELECT-Anweisungen und eine andere für INSERT-, UPDATE- und DELETE-Anweisungen verwenden. Laravel macht dies zu einem Kinderspiel, und die richtigen Verbindungen werden immer verwendet, unabhängig davon, ob Sie rohe Abfragen, den Query Builder oder das eloquente ORM verwenden.
Um zu sehen, wie Lese-/Schreibverbindungen konfiguriert werden sollten, schauen wir uns dieses Beispiel an:
'mysql' => [
'read' => [
'host' => [
'192.168.1.1',
'196.168.1.2',
],
],
'write' => [
'host' => [
'196.168.1.3',
],
],
'sticky' => true,
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
Beachten Sie, dass dem Konfigurations-Array drei Schlüssel hinzugefügt wurden: read, write und sticky. Die read und write keys haben Array-Werte, die einen einzigen key (Schlüssel) enthalten: host. Der Rest der Datenbankoptionen für die read and write connections wird aus dem mysql-Array zusammengeführt.
Sie müssen nur dann Elemente in den read and write - Arrays platzieren, wenn Sie die Werte aus dem Haupt-Array überschreiben möchten. In diesem Fall wird also 192.168.1.1 als Host für die "read"-Verbindung und 192.168.1.3 für die "write"-Verbindung verwendet. Die Datenbank-Anmeldeinformationen, das Präfix, der Zeichensatz und alle anderen Optionen im mysql-Array werden für beide Verbindungen freigegeben.
The sticky OptionDie Option sticky ist ein optionaler Wert, der verwendet werden kann, um das sofortige Lesen von Datensätzen zu ermöglichen, die während des aktuellen Anfragezyklus in die Datenbank geschrieben wurden. Wenn die Sticky-Option aktiviert ist und während des aktuellen Anfragezyklus eine Schreiboperation gegen die Datenbank durchgeführt wurde, verwenden alle weiteren Lesevorgänge die Verbindung "write". Dadurch wird sichergestellt, dass alle während des Anfragezyklus geschriebenen Daten während derselben Anfrage sofort von der Datenbank zurückgelesen werden können. Es liegt an Ihnen zu entscheiden, ob dies das gewünschte Verhalten für Ihre Anwendung ist.
Using Multiple Database ConnectionsWenn Sie mehrere Verbindungen (Connections) verwenden, können Sie auf jede Verbindung über die Connection Methode an der DB-Facade zugreifen. Der Name, der an die Connection Methode übergeben wird, sollte einer der in Ihrer Konfigurationsdatei config/database.php aufgeführten Verbindungen entsprechen:
$users = DB::connection('foo')->select(...);
Sie können auch mit der Methode getPdo auf die rohe, zugrunde liegende PDO-Instanz auf einer Verbindungsinstanz zugreifen:
$pdo = DB::connection()->getPdo();