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)
Version: 4.0