Configurazione del database
Panoramica delle opzioni di configurazione di Nette Database.
Se non usate tutto il framework, ma solo questa libreria, leggete come caricare la configurazione.
Connessione singola
Configurazione di una singola connessione al database:
database:
# DSN, l'unica chiave obbligatoria
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Vengono creati i servizi Nette\Database\Connection e Nette\Database\Explorer, che di solito si
passano tramite autowiring oppure facendo riferimento al loro nome.
Altre impostazioni:
database:
# mostrare il pannello del database nella Tracy Bar?
debugger: ... # (bool) predefinito è attivo se Tracy è attiva
# mostrare l'EXPLAIN della query nella Tracy Bar?
explain: ... # (bool) predefinito true
# abilitare l'autowiring per questa connessione?
autowired: ... # (bool) predefinito true per la prima connessione
# convenzioni delle tabelle: discovered, static oppure il nome di una classe
conventions: discovered # (string) predefinito 'discovered'
options:
# connettersi al database solo quando serve?
lazy: ... # (bool) predefinito false
# classe del driver di database PHP
driverClass: # (string)
# solo MySQL: imposta sql_mode
sqlmode: # (string)
# solo MySQL: imposta SET NAMES
charset: # (string) predefinito 'utf8mb4'
# solo MySQL: converte TINYINT(1) in bool
convertBoolean: # (bool) predefinito false
# restituisce le colonne di data come oggetti immutabili (dalla versione 3.2.1)
newDateTime: # (bool) predefinito false
# solo Oracle e SQLite: formato per salvare la data
formatDateTime: # (string) predefinito 'U'
La chiave options può contenere altre opzioni che trovate nella documentazione dei driver PDO, per esempio:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Connessioni multiple
Nella configurazione possiamo definire più connessioni al database dividendole in sezioni con un nome:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
L'autowiring è attivo solo per i servizi della prima sezione. Lo si può cambiare con autowired: false oppure
autowired: true.
Servizi DI
Al container DI vengono aggiunti questi servizi, 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 una sola 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 poi
database.another.connection e database.another.explorer.
I servizi non autowired si passano esplicitamente facendo riferimento al loro nome:
services:
- UserFacade(@database.another.connection)