Configurarea bazei de date
Prezentare generală a opțiunilor de configurare pentru Nette Database.
Dacă nu utilizați întregul framework, ci doar această bibliotecă, citiți cum să încărcați configurația.
O singură conexiune
Configurarea unei singure conexiuni la baza de date:
database:
# DSN, singura cheie obligatorie
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Creează serviciile Nette\Database\Connection
și Nette\Database\Explorer
, pe care de obicei le
transmitem prin autowiring, eventual prin referință la numele lor.
Alte setări:
database:
# afișează panoul database în Tracy Bar?
debugger: ... # (bool) implicit este true
# afișează EXPLAIN pentru interogări în Tracy Bar?
explain: ... # (bool) implicit este true
# permite autowiring pentru această conexiune?
autowired: ... # (bool) implicit este true la prima conexiune
# convenții pentru tabele: discovered, static sau numele clasei
conventions: discovered # (string) implicit este 'discovered'
options:
# conectare la baza de date doar când este necesar?
lazy: ... # (bool) implicit este false
# clasa PHP a driverului bazei de date
driverClass: # (string)
# doar MySQL: setează sql_mode
sqlmode: # (string)
# doar MySQL: setează SET NAMES
charset: # (string) implicit este 'utf8mb4'
# doar MySQL: convertește TINYINT(1) la bool
convertBoolean: # (bool) implicit este false
# returnează coloanele cu dată ca obiecte imutabile (de la versiunea 3.2.1)
newDateTime: # (bool) implicit este false
# doar Oracle și SQLite: format pentru stocarea datei
formatDateTime: # (string) implicit este 'U'
În cheia options
se pot specifica și alte opțiuni, pe care le găsiți în documentația driverelor PDO, cum ar fi:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Mai multe conexiuni
În configurație putem defini și mai multe conexiuni la baza de date împărțindu-le în secțiuni numite:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
Autowiring-ul este activat doar pentru serviciile din prima secțiune. Acest lucru poate fi schimbat folosind
autowired: false
sau autowired: true
.
Servicii DI
Aceste servicii sunt adăugate în containerul DI, unde ###
reprezintă numele conexiunii:
Nume | Tip | Descriere |
---|---|---|
database.###.connection |
Nette\Database\Connection | conexiune la baza de date |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Dacă definim doar o singură conexiune, numele serviciilor vor fi database.default.connection
și
database.default.explorer
. Dacă definim mai multe conexiuni ca în exemplul de mai sus, numele vor corespunde
secțiunilor, adică database.main.connection
, database.main.explorer
și apoi
database.another.connection
și database.another.explorer
.
Serviciile ne-autowired le transmitem explicit prin referință la numele lor:
services:
- UserFacade(@database.another.connection)