Datenbank konfigurieren
Überblick über die Konfigurationsoptionen für die Nette-Datenbank.
Wenn Sie nicht das gesamte Framework, sondern nur diese Bibliothek verwenden, lesen Sie , wie Sie die Konfiguration laden.
Einzelne Verbindung
Konfigurieren Sie eine einzelne Datenbankverbindung:
database:
# DSN, nur obligatorischer Schlüssel
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Erstellt die Dienste Nette\Database\Connection
und Nette\Database\Explorer
, die in der Regel per Autowiring oder durch Verweis auf ihren Namen übergeben werden.
Andere Einstellungen:
database:
# zeigt Datenbank-Panel in Tracy Bar?
debugger: ... # (bool) ist standardmäßig true
# zeigt die Abfrage EXPLAIN in der Tracy Bar?
explain: ... # (bool) ist standardmäßig true
# um die automatische Verdrahtung für diese Verbindung zu aktivieren?
autowired: ... # (bool) ist standardmäßig true für die erste Verbindung
# Tabellenkonventionen: entdeckt, statisch oder Klassenname
conventions: discovered # (string) Standardwert ist 'discovered'.
options:
# nur bei Bedarf mit der Datenbank verbinden?
lazy: ... # (bool) standardmäßig false
# PHP-Datenbanktreiberklasse
driverClass: # (string)
# nur MySQL: setzt sql_mode
sqlmode: # (string)
# nur MySQL: setzt SET NAMES
charset: # (string) Standardwert ist 'utf8mb4'
# nur MySQL: wandelt TINYINT(1) in bool um
convertBoolean: # (bool) standardmäßig false
# Gibt Datumsspalten als unveränderliche Objekte zurück (seit Version 3.2.1)
newDateTime: # (bool) standardmäßig false
# nur Oracle und SQLite: Datumsformat
formatDateTime: # (string) Standardwert ist 'U'
Der Schlüssel options
kann weitere Optionen enthalten, die in der Dokumentation des PDO-Treibers zu finden sind, wie z. B.:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Mehrere Verbindungen
In der Konfiguration können wir 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:'
Die automatische Verdrahtung 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 ###
für den Verbindungsnamen steht:
Name | Typ | Beschreibung |
---|---|---|
database.###.connection |
Nette\Database\Connection | Datenbankverbindung |
database.###.explorer |
Nette\Database\Explorer | Datenbank-Explorer |
Wenn wir nur eine Verbindung definieren, lauten die Dienstnamen database.default.connection
und
database.default.explorer
. Wenn wir wie im obigen Beispiel mehrere Verbindungen definieren, entsprechen die Namen den
Abschnitten, d. h. database.main.connection
, database.main.explorer
und dann
database.another.connection
und database.another.explorer
.
Die nicht-authentifizierten Dienste werden explizit mit ihrem Namen übergeben:
services:
- UserFacade(@database.another.connection)