Nette Documentation Preview

syntax
Configurazione del database
***************************

.[perex]
Panoramica delle opzioni di configurazione del database Nette.

Se non si utilizza l'intero framework, ma solo questa libreria, leggere [come caricare la configurazione |bootstrap:].


Connessione singola .[#toc-single-connection]
---------------------------------------------

Configurare una singola connessione al database:

```neon
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 |dependency-injection:autowiring] o facendo riferimento al [loro nome |#DI Services].

Altre impostazioni:

```neon
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 MySQL: converte TINYINT(1) in bool
		supportBooleans: # (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 |https://www.php.net/manual/en/pdo.drivers.php] del [driver PDO |https://www.php.net/manual/en/pdo.drivers.php], come ad esempio:

```neon
database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true
```


Connessioni multiple .[#toc-multiple-connections]
-------------------------------------------------

Nella configurazione si possono definire più connessioni al database dividendole in sezioni denominate:

```neon
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 .[#toc-di-services]
------------------------------

Questi servizi vengono aggiunti al contenitore DI, dove `###` rappresenta il nome della connessione:

| Nome | Tipo | Descrizione
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | connessione al database
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Database Explorer |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:

```neon
services:
	- UserFacade(@database.another.connection)
```

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

		# solo MySQL: converte TINYINT(1) in bool
		supportBooleans: # (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)