Configuration de la base de données

Aperçu des options de configuration pour Nette Database.

Si vous n'utilisez pas l'ensemble du framework, mais uniquement cette bibliothèque, lisez comment charger la configuration.

Connexion unique

Configuration d'une connexion unique à la base de données :

database:
	# DSN, seule clé obligatoire
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Crée les services Nette\Database\Connection et Nette\Database\Explorer, que nous transmettons généralement par autowiring, ou par référence à leur nom.

Autres paramètres :

database:
	# afficher le panneau de base de données dans la barre Tracy ?
	debugger: ...     # (bool) la valeur par défaut est true

	# afficher EXPLAIN des requêtes dans la barre Tracy ?
	explain: ...      # (bool) la valeur par défaut est true

	# autoriser l'autowiring pour cette connexion ?
	autowired: ...    # (bool) la valeur par défaut est true pour la première connexion

	# conventions de table : discovered, static ou nom de classe
	conventions: discovered  # (string) la valeur par défaut est 'discovered'

	options:
		# se connecter à la base de données uniquement lorsque c'est nécessaire ?
		lazy: ...     # (bool) la valeur par défaut est false

		# classe PHP du pilote de base de données
		driverClass:  # (string)

		# uniquement MySQL : définit sql_mode
		sqlmode:      # (string)

		# uniquement MySQL : définit SET NAMES
		charset:      # (string) la valeur par défaut est 'utf8mb4'

		# uniquement MySQL : convertit TINYINT(1) en bool
		convertBoolean:  # (bool) la valeur par défaut est false

		# renvoie les colonnes de date comme objets immuables (depuis la version 3.2.1)
		newDateTime:  # (bool) la valeur par défaut est false

		# uniquement Oracle et SQLite : format pour stocker la date
		formatDateTime: # (string) la valeur par défaut est 'U'

Dans la clé options, vous pouvez spécifier d'autres options que vous trouverez dans la documentation des pilotes PDO, comme par exemple :

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Connexions multiples

Dans la configuration, nous pouvons également définir plusieurs connexions de base de données en les divisant en sections nommées :

database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'

L'autowiring n'est activé que pour les services de la première section. Cela peut être modifié à l'aide de autowired: false ou autowired: true.

Services DI

Ces services sont ajoutés au conteneur DI, où ### représente le nom de la connexion :

Nom Type Description
database.###.connection Nette\Database\Connection connexion à la base de données
database.###.explorer Nette\Database\Explorer Database Explorer

Si nous ne définissons qu'une seule connexion, les noms des services seront database.default.connection et database.default.explorer. Si nous définissons plusieurs connexions comme dans l'exemple ci-dessus, les noms correspondront aux sections, c'est-à-dire database.main.connection, database.main.explorer et ensuite database.another.connection et database.another.explorer.

Nous transmettons explicitement les services non autowirés par référence à leur nom :

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