Configuration de la base de données
Aperçu des options de configuration de la base de données Nette.
Si vous n'utilisez pas l'ensemble du framework, mais seulement cette bibliothèque, lisez comment charger la configuration.
Connexion unique
Configurez une connexion unique à la base de données :
database:
# DSN, uniquement la clé obligatoire
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Il crée des services de type Nette\Database\Connection
et aussi Nette\Database\Explorer
pour la
couche Database Explorer. La connexion à la base de données est généralement passée par un câblage automatique, si cela n'est pas possible, utilisez les noms de services
@database.default.connection
resp. @database.default.explorer
.
Autres paramètres :
database:
# affiche le panneau de la base de données dans Tracy Bar ?
debugger: ... # (bool) vaut true par défaut
# affiche la requête EXPLAIN dans Tracy Bar ?
explain: ... # (bool) vaut true par défaut
# activer le câblage automatique pour cette connexion ?
autowired: ... # (bool) vaut true par défaut pour la première connexion
# conventions de la table: découverte, statique, ou nom de classe
conventions: discovered # (string) Valeur par défaut: 'discovered'.
options:
# pour ne se connecter à la base de données qu'en cas de besoin ?
lazy: ... # (bool) a pour valeur par défaut false
# Classe du pilote de base de données PHP
driverClass: # (string)
# seulement MySQL: définit sql_mode
sqlmode: # (string)
# uniquement MySQL: sets SET NAMES
charset: # (string) par défaut 'utf8mb4' ('utf8' avant v5.5.3)
# uniquement Oracle et SQLite: format de date
formatDateTime: # (string) vaut par défaut 'U'.
La clé options
peut contenir d'autres options qui peuvent être trouvées dans la documentation du pilote PDO, telles que :
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Connexions multiples
Dans la configuration, nous pouvons 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:'
Chaque connexion définie crée des services qui incluent le nom de la section dans leur nom, c'est-à-dire
@database.main.connection
& @database.main.explorer
et ensuite
@database.another.connection
& @database.another.explorer
.
Le câblage automatique est activé uniquement pour les services de la première section. Ceci peut être modifié avec
autowired: false
ou autowired: true
. Les services non câblés sont transmis par nom :
services:
- UserFacade(@database.another.connection)