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)