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)