Konfiguracja bazy danych
Przegląd opcji konfiguracyjnych dla Nette Database.
Jeśli nie używasz całego frameworku, tylko tej biblioteki, przeczytaj, jak wczytać konfigurację.
Jedno połączenie
Konfiguracja jednego połączenia z bazą danych:
database:
# DSN, jedyny obowiązkowy klucz
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Utworzy to usługi Nette\Database\Connection i Nette\Database\Explorer, które przekazujemy zwykle
przez autowiring albo odwołując się do ich nazwy.
Pozostałe ustawienia:
database:
# pokazać panel bazy danych w Tracy Bar?
debugger: ... # (bool) domyślnie włączone, jeśli Tracy jest aktywne
# pokazać EXPLAIN zapytań w Tracy Bar?
explain: ... # (bool) domyślnie true
# włączyć autowiring dla tego połączenia?
autowired: ... # (bool) domyślnie true dla pierwszego połączenia
# konwencje tabel: discovered, static albo nazwa klasy
conventions: discovered # (string) domyślnie 'discovered'
options:
# łączyć się z bazą danych dopiero wtedy, gdy jest potrzebna?
lazy: ... # (bool) domyślnie false
# klasa sterownika bazy danych w PHP
driverClass: # (string)
# tylko MySQL: ustawia sql_mode
sqlmode: # (string)
# tylko MySQL: ustawia SET NAMES
charset: # (string) domyślnie 'utf8mb4'
# tylko MySQL: konwertuje TINYINT(1) na bool
convertBoolean: # (bool) domyślnie false
# zwraca kolumny dat jako obiekty niezmienne (od wersji 3.2.1)
newDateTime: # (bool) domyślnie false
# tylko Oracle i SQLite: format zapisu daty
formatDateTime: # (string) domyślnie 'U'
Klucz options może zawierać także inne opcje, które znajdziesz w dokumentacji sterowników PDO, na przykład:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Wiele połączeń
W konfiguracji możemy zdefiniować wiele 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:'
Autowiring jest włączony tylko dla usług z pierwszej sekcji. Można to zmienić za pomocą autowired: false
albo autowired: true.
Usługi DI
Do kontenera DI dodawane są te usługi, gdzie ### oznacza nazwę połączenia:
| Nazwa | Typ | Opis |
|---|---|---|
database.###.connection |
Nette\Database\Connection | połączenie z bazą danych |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Jeśli zdefiniujemy tylko jedno połączenie, nazwy usług będą brzmieć database.default.connection i
database.default.explorer. Jeśli zdefiniujemy wiele połączeń jak w powyższym przykładzie, nazwy będą
odpowiadać sekcjom, czyli database.main.connection, database.main.explorer, a także
database.another.connection i database.another.explorer.
Usługi spoza autowiringu przekazujemy jawnie, odwołując się do ich nazwy:
services:
- UserFacade(@database.another.connection)