Configurazione del database
Panoramica delle opzioni di configurazione per Nette Database.
Se non utilizzate l'intero framework, ma solo questa libreria, leggete come caricare la configurazione.
Connessione singola
Configurazione di una singola connessione al database:
database:
# DSN, unica chiave obbligatoria
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Crea i servizi Nette\Database\Connection
e Nette\Database\Explorer
, che di solito passiamo tramite
autowiring, oppure tramite riferimento al loro nome.
Altre impostazioni:
database:
# visualizzare il pannello del database nella Tracy Bar?
debugger: ... # (bool) il default è true
# visualizzare EXPLAIN delle query nella Tracy Bar?
explain: ... # (bool) il default è true
# abilitare l'autowiring per questa connessione?
autowired: ... # (bool) il default è true per la prima connessione
# convenzioni delle tabelle: discovered, static o nome della classe
conventions: discovered # (string) il default è 'discovered'
options:
# connettersi al database solo quando necessario?
lazy: ... # (bool) il default è false
# Classe PHP del driver del database
driverClass: # (string)
# solo MySQL: imposta sql_mode
sqlmode: # (string)
# solo MySQL: imposta SET NAMES
charset: # (string) il default è 'utf8mb4'
# solo MySQL: converte TINYINT(1) in bool
convertBoolean: # (bool) il default è false
# restituisce le colonne data come oggetti immutabili (dalla versione 3.2.1)
newDateTime: # (bool) il default è false
# solo Oracle e SQLite: formato per la memorizzazione della data
formatDateTime: # (string) il default è 'U'
Nella chiave options
è possibile specificare altre opzioni che trovate nella documentazione dei driver PDO, come ad esempio:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Connessioni multiple
Nella configurazione possiamo definire anche più connessioni al database dividendole in sezioni denominate:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
L'autowiring è abilitato solo per i servizi della prima sezione. È possibile modificarlo tramite
autowired: false
o autowired: true
.
Servizi DI
Questi servizi vengono aggiunti al container DI, dove ###
rappresenta il nome della connessione:
Nome | Tipo | Descrizione |
---|---|---|
database.###.connection |
Nette\Database\Connection | connessione al database |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Se definiamo solo una connessione, i nomi dei servizi saranno database.default.connection
e
database.default.explorer
. Se definiamo più connessioni come nell'esempio sopra, i nomi corrisponderanno alle
sezioni, cioè database.main.connection
, database.main.explorer
e inoltre
database.another.connection
e database.another.explorer
.
I servizi non autowired li passiamo esplicitamente tramite riferimento al loro nome:
services:
- UserFacade(@database.another.connection)