Nette Documentation Preview

syntax
Datenbank konfigurieren
***********************

.[perex]
Ü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 |bootstrap:].


Einzelne Verbindung .[#toc-single-connection]
---------------------------------------------

Konfigurieren Sie eine einzelne Datenbankverbindung:

```neon
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 |dependency-injection:autowiring] oder durch Verweis auf [ihren Namen |#DI Services] übergeben werden.

Andere Einstellungen:

```neon
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

		# 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 |https://www.php.net/manual/en/pdo.drivers.php] zu finden sind, wie z. B.:

```neon
database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true
```


Mehrere Verbindungen .[#toc-multiple-connections]
-------------------------------------------------

In der Konfiguration können wir mehrere Datenbankverbindungen definieren, indem wir sie in benannte Abschnitte unterteilen:

```neon
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 .[#toc-di-services]
------------------------------

Diese Dienste werden dem DI-Container hinzugefügt, wobei `###` für den Verbindungsnamen steht:

| Name | Typ | Beschreibung
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | Datenbankverbindung
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Datenbank-Explorer |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:

```neon
services:
	- UserFacade(@database.another.connection)
```

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

		# 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)