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 servizi del tipo Nette\Database\Connection e Nette\Database\Explorer per il livello Database Explorer. La connessione al database viene solitamente passata tramite autocablaggio; se ciò non è possibile, utilizzare i nomi dei servizi @database.default.connection e @database.default.explorer.

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' ('utf8' prima della v5.5.3)

		# 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:'

Ogni connessione definita crea servizi che includono il nome della sezione nel loro nome, ad esempio @database.main.connection e @database.main.explorer e poi @database.another.connection e @database.another.explorer.

Il cablaggio automatico è abilitato solo per i servizi della prima sezione. Questo può essere modificato con autowired: false o autowired: true. I servizi non autocablati vengono passati per nome:

services:
	- UserFacade(@database.another.connection)
versione: 4.0