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' ('utf8' vor v5.5.3)

		# nur MySQL: wandelt TINYINT(1) in bool um
		supportBooleans: # (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)
Version: 4.0