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)