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"

	# nazwa użytkownika
	user: ...

	# hasło
	password: ...

Tworzy serwis Nette\Database\Connection oraz Nette\Database\Explorer dla warstwy Database Explorer. Baza danych jest zwykle przekazywana przez autowiring, jeśli nie jest to możliwe, należy użyć odpowiednio nazw serwisów @database.default.connection i @database.default.explorer,.

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' ('utf8' before 5.5.3)

		# 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:'

Każde tak zdefiniowane połączenie tworzy serwisy, które w nazwie zawierają nazwę sekcji, czyli @database.main.connection & @database.main.explorer a następnie @database.another.connection & @database.another.explorer.

Autowiring jest włączony tylko dla usług z pierwszej sekcji. Można to zmienić za pomocą autowired: false lub autowired: true. Usługi nieautoryzowane przekazujemy jawnie:

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