Configurazione del database
Panoramica delle opzioni di configurazione del database Nette.
Se non si utilizza l'intero framework, ma solo questa libreria, leggere come caricare la configurazione.
Connessione singola
Configurare una singola connessione al database:
database:
# DSN, solo chiave obbligatoria
dsn: "sqlite:%appDir%/Modello/demo.db"
user: ...
password: ...
Crea i servizi Nette\Database\Connection
e Nette\Database\Explorer
, che di solito vengono passati
tramite autocablaggio o facendo riferimento al loro
nome.
Altre impostazioni:
database:
# mostra il pannello del database nella barra Tracy?
debugger: ... # (bool) predefinito a true
# mostra la query EXPLAIN nella barra Tracy?
explain: ... # (bool) predefinito a true
# abilitare il cablaggio automatico per questa connessione?
autowired: ... # (bool) predefinito a true per la prima connessione
# convenzioni della tabella: scoperta, statica o nome della classe
conventions: discovered # (string) predefinito a "discovered".
options:
# per connettersi al database solo quando necessario?
lazy: ... # (bool) predefinito a false
# classe del driver del database PHP
driverClass: # (string)
# Solo MySQL: imposta sql_mode
sqlmode: # (string)
# solo MySQL: imposta SET NAMES
charset: # (string) predefinito a 'utf8mb4'
# solo MySQL: converte TINYINT(1) in bool
convertBoolean: # (bool) predefinito a false
# restituisce le colonne di data come oggetti immutabili (dalla versione 3.2.1)
newDateTime: # (bool) predefinito a false
# solo Oracle e SQLite: formato data
formatDateTime: # (string) predefinito a "U".
La chiave options
può contenere altre opzioni che si possono trovare nella documentazione del driver PDO, come ad esempio:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Connessioni multiple
Nella configurazione si possono definire 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:'
Il cablaggio automatico è abilitato solo per i servizi della prima sezione. Questo può essere modificato con
autowired: false
o autowired: true
.
Servizi DI
Questi servizi vengono aggiunti al contenitore 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 si definisce una sola connessione, i nomi dei servizi saranno database.default.connection
e
database.default.explorer
. Se si definiscono più connessioni come nell'esempio precedente, i nomi corrisponderanno
alle sezioni, cioè database.main.connection
, database.main.explorer
e poi
database.another.connection
e database.another.explorer
.
I servizi non autenticati vengono passati esplicitamente facendo riferimento al loro nome:
services:
- UserFacade(@database.another.connection)