Datenbankkonfiguration
Übersicht der Konfigurationsoptionen für Nette Database.
Wenn Sie nicht das gesamte Framework verwenden, sondern nur diese Bibliothek, lesen Sie, wie die Konfiguration geladen wird.
Einzelne Verbindung
Konfiguration einer einzelnen Datenbankverbindung:
database:
# DSN, einziger Pflichtschlüssel
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Erstellt die Dienste Nette\Database\Connection
und Nette\Database\Explorer
, die wir normalerweise
über Autowiring übergeben, oder durch Verweis auf ihren Namen.
Weitere Einstellungen:
database:
# Datenbankpanel in der Tracy Bar anzeigen?
debugger: ... # (bool) Standard ist true
# EXPLAIN von Abfragen in der Tracy Bar anzeigen?
explain: ... # (bool) Standard ist true
# Autowiring für diese Verbindung zulassen?
autowired: ... # (bool) Standard ist true bei der ersten Verbindung
# Tabellenkonventionen: discovered, static oder Klassenname
conventions: discovered # (string) Standard ist 'discovered'
options:
# Erst verbinden, wenn nötig?
lazy: ... # (bool) Standard ist false
# PHP-Klasse des Datenbanktreibers
driverClass: # (string)
# nur MySQL: setzt sql_mode
sqlmode: # (string)
# nur MySQL: setzt SET NAMES
charset: # (string) Standard ist 'utf8mb4'
# nur MySQL: konvertiert TINYINT(1) in bool
convertBoolean: # (bool) Standard ist false
# gibt Datumsspalten als unveränderliche Objekte zurück (ab Version 3.2.1)
newDateTime: # (bool) Standard ist false
# nur Oracle und SQLite: Format zum Speichern von Datum/Uhrzeit
formatDateTime: # (string) Standard ist 'U'
Im Schlüssel options
können weitere Optionen angegeben werden, die Sie in der Dokumentation der PDO-Treiber finden, wie zum Beispiel:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Mehrere Verbindungen
In der Konfiguration können wir auch mehrere Datenbankverbindungen definieren, indem wir sie in benannte Abschnitte unterteilen:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
Autowiring ist nur für Dienste aus dem ersten Abschnitt aktiviert. Dies kann mit autowired: false
oder
autowired: true
geändert werden.
DI-Dienste
Diese Dienste werden dem DI-Container hinzugefügt, wobei ###
den Namen der Verbindung darstellt:
Name | Typ | Beschreibung |
---|---|---|
database.###.connection |
Nette\Database\Connection | Verbindung zur Datenbank |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Wenn wir nur eine Verbindung definieren, lauten die Dienstnamen database.default.connection
und
database.default.explorer
. Wenn wir mehrere Verbindungen wie im obigen Beispiel definieren, entsprechen die Namen den
Abschnitten, d.h. database.main.connection
, database.main.explorer
und weiter
database.another.connection
und database.another.explorer
.
Nicht automatisch verdrahtete Dienste übergeben wir explizit durch Verweis auf ihren Namen:
services:
- UserFacade(@database.another.connection)