Nette Documentation Preview

syntax
Konfiguracja bazy danych
************************

.[perex]
Przegląd opcji konfiguracyjnych dla Nette Database.

Jeśli nie używasz całego frameworka, a jedynie tej biblioteki, przeczytaj [jak załadować konfigurację |bootstrap:].


Jedno połączenie .[#toc-single-connection]
------------------------------------------

Skonfiguruj pojedyncze połączenie z bazą danych:

```neon
database:
	# DSN, pojedynczy klucz obowiązkowy
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...
```

Tworzy usługi `Nette\Database\Connection` i `Nette\Database\Explorer`, które są zwykle przekazywane przez [autowiring |dependency-injection:autowiring] lub przez odwołanie do [ich nazwy |#DI Services].

Inne ustawienia:

```neon
database:
	# pokazać panel bazy danych w Tracy Bar?
	debugger: ...     # (bool) domyślnie jest true

	# pokazać zapytania EXPLAIN w Tracy Bar?
	explain: ...      # (bool) domyślnie jest true

	# enable autowiring for this connection?
	autowired: ...    # (bool) domyślnie przyjmuje wartość true dla pierwszego połączenia

	# konwencja tablicy: odkryta, statyczna lub nazwa klasy
	conventions: discovered # (string) default is 'discovered'

	options:
		# łączyć się z bazą danych tylko w razie potrzeby?
		lazy: ...     # (bool) domyślnie jest false

		# Klasa sterownika bazy danych PHP
		driverClass:  # (string)

		# Tylko dla MySQL: ustawia sql_mode
		sqlmode:      # (string)

		# Tylko MySQL: ustawia SET NAMES
		charset:      # (string) default is 'utf8mb4'

		# Tylko MySQL: konwertuje TINYINT(1) na bool
		convertBoolean: # (bool) domyślnie false

		# zwraca kolumny daty jako niezmienne obiekty (od wersji 3.2.1)
		newDateTime:  # (bool) domyślnie false

		# Tylko Oracle i SQLite: format przechowywania danych
		formatDateTime: # (string) domyślnie 'U'
```

W kluczu `options` można określić dodatkowe opcje, które można znaleźć w [dokumentacji sterownika PDO |https://www.php.net/manual/en/pdo.drivers.php], takie jak:

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


Więcej połączeń .[#toc-vice-spojeni]
------------------------------------

W konfiguracji możemy zdefiniować więcej połączeń z bazą danych, dzieląc je na nazwane sekcje:

```neon
database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'
```

Automatyczne łączenie jest włączone tylko dla usług z pierwszej sekcji. Można to zmienić za pomocą `autowired: false` lub `autowired: true`.


Usługi DI .[#toc-di-services]
-----------------------------

Usługi te są dodawane do kontenera DI, gdzie `###` reprezentuje nazwę połączenia:

| Name | Type | Description
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | połączenie z bazą danych
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Database Explorer |explorer]


Jeśli zdefiniujemy tylko jedno połączenie, nazwami usług będą `database.default.connection` i `database.default.explorer`. Jeśli zdefiniujemy wiele połączeń, jak w powyższym przykładzie, nazwy będą odpowiadać sekcjom, tj. `database.main.connection`, `database.main.explorer`, a następnie `database.another.connection` i `database.another.explorer`.

Usługi nieuwierzytelnione przekazujemy jawnie, odwołując się do ich nazwy:

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

Konfiguracja bazy danych

Przegląd opcji konfiguracyjnych dla Nette Database.

Jeśli nie używasz całego frameworka, a jedynie tej biblioteki, przeczytaj jak załadować konfigurację.

Jedno połączenie

Skonfiguruj pojedyncze połączenie z bazą danych:

database:
	# DSN, pojedynczy klucz obowiązkowy
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Tworzy usługi Nette\Database\Connection i Nette\Database\Explorer, które są zwykle przekazywane przez autowiring lub przez odwołanie do ich nazwy.

Inne ustawienia:

database:
	# pokazać panel bazy danych w Tracy Bar?
	debugger: ...     # (bool) domyślnie jest true

	# pokazać zapytania EXPLAIN w Tracy Bar?
	explain: ...      # (bool) domyślnie jest true

	# enable autowiring for this connection?
	autowired: ...    # (bool) domyślnie przyjmuje wartość true dla pierwszego połączenia

	# konwencja tablicy: odkryta, statyczna lub nazwa klasy
	conventions: discovered # (string) default is 'discovered'

	options:
		# łączyć się z bazą danych tylko w razie potrzeby?
		lazy: ...     # (bool) domyślnie jest false

		# Klasa sterownika bazy danych PHP
		driverClass:  # (string)

		# Tylko dla MySQL: ustawia sql_mode
		sqlmode:      # (string)

		# Tylko MySQL: ustawia SET NAMES
		charset:      # (string) default is 'utf8mb4'

		# Tylko MySQL: konwertuje TINYINT(1) na bool
		convertBoolean: # (bool) domyślnie false

		# zwraca kolumny daty jako niezmienne obiekty (od wersji 3.2.1)
		newDateTime:  # (bool) domyślnie false

		# Tylko Oracle i SQLite: format przechowywania danych
		formatDateTime: # (string) domyślnie 'U'

W kluczu options można określić dodatkowe opcje, które można znaleźć w dokumentacji sterownika PDO, takie jak:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Więcej połączeń

W konfiguracji możemy zdefiniować więcej połączeń z bazą danych, dzieląc je na nazwane sekcje:

database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'

Automatyczne łączenie jest włączone tylko dla usług z pierwszej sekcji. Można to zmienić za pomocą autowired: false lub autowired: true.

Usługi DI

Usługi te są dodawane do kontenera DI, gdzie ### reprezentuje nazwę połączenia:

Name Type Description
database.###.connection Nette\Database\Connection połączenie z bazą danych
database.###.explorer Nette\Database\Explorer Database Explorer

Jeśli zdefiniujemy tylko jedno połączenie, nazwami usług będą database.default.connection i database.default.explorer. Jeśli zdefiniujemy wiele połączeń, jak w powyższym przykładzie, nazwy będą odpowiadać sekcjom, tj. database.main.connection, database.main.explorer, a następnie database.another.connection i database.another.explorer.

Usługi nieuwierzytelnione przekazujemy jawnie, odwołując się do ich nazwy:

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