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)
versione: 4.0