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: ...
Es werden Dienste vom Typ Nette\Database\Connection
und auch Nette\Database\Explorer
für die Datenbank-Explorer-Schicht erstellt. Die Datenbankverbindung wird in der
Regel per Autowiring übergeben, falls dies nicht möglich
ist, verwenden Sie die Dienstnamen @database.default.connection
bzw. @database.default.explorer
.
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' ('utf8' vor v5.5.3)
# 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:'
Jede definierte Verbindung erzeugt Dienste, die den Namen des Abschnitts in ihrem Namen enthalten, z. B.
@database.main.connection
& @database.main.explorer
und weiter
@database.another.connection
& @database.another.explorer
.
Die automatische Verdrahtung ist nur für Dienste aus dem ersten Abschnitt aktiviert. Dies kann mit
autowired: false
oder autowired: true
geändert werden. Nicht-autoverdrahtete Dienste werden namentlich
übergeben:
services:
- UserFacade(@database.another.connection)