Konfiguracja bazy danych
Przegląd opcji konfiguracyjnych dla Nette Database.
Jeśli nie używasz całego frameworka, ale tylko tej biblioteki, przeczytaj, jak wczytać konfigurację.
Jedno połączenie
Konfiguracja jednego połączenia z bazą danych:
database:
# DSN, jedyny wymagany klucz
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Tworzy usługi Nette\Database\Connection
i Nette\Database\Explorer
, które zazwyczaj przekazujemy
przez autowiring, ewentualnie przez odwołanie do ich nazwy.
Dalsze ustawienia:
database:
# wyświetlić panel bazy danych w Tracy Bar?
debugger: ... # (bool) domyślnie true
# wyświetlić 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 lub nazwa klasy
conventions: discovered # (string) domyślnie 'discovered'
options:
# łączyć się z bazą danych dopiero w razie potrzeby?
lazy: ... # (bool) domyślnie false
# klasa PHP sterownika bazy danych
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 z datą jako obiekty immutable (od wersji 3.2.1)
newDateTime: # (bool) domyślnie false
# tylko Oracle i SQLite: format przechowywania daty
formatDateTime: # (string) domyślnie 'U'
W kluczu options
można podawać inne opcje, które znajdziesz w dokumentacji sterowników PDO, takie jak:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Wiele połączeń
W konfiguracji możemy zdefiniować również 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
lub autowired: true
.
Usługi DI
Te usługi są dodawane do kontenera DI, gdzie ###
reprezentuje 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 definiujemy tylko jedno połączenie, nazwy usług będą database.default.connection
i
database.default.explorer
. Jeśli definiujemy więcej połączeń jak w przykładzie powyżej, nazwy będą
odpowiadać sekcjom, tj. database.main.connection
, database.main.explorer
oraz
database.another.connection
i database.another.explorer
.
Usługi bez autowiringu przekazujemy jawnie przez odwołanie do ich nazwy:
services:
- UserFacade(@database.another.connection)