Configuration de la base de données
Aperçu des options de configuration de Nette Database.
Si vous n'utilisez pas tout le framework, mais seulement cette bibliothèque, lisez comment charger la configuration.
Connexion unique
Configuration d'une seule connexion à la base de données :
database:
# DSN, la seule clé obligatoire
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Cela crée les services Nette\Database\Connection et Nette\Database\Explorer, qui sont généralement
passés par autowiring ou en se référant à leur nom.
Autres réglages :
database:
# afficher le panneau de la base de données dans la Tracy Bar ?
debugger: ... # (bool) activé par défaut si Tracy est actif
# afficher l'EXPLAIN des requêtes dans la Tracy Bar ?
explain: ... # (bool) true par défaut
# activer l'autowiring pour cette connexion ?
autowired: ... # (bool) true par défaut pour la première connexion
# conventions de tables : discovered, static, ou nom de classe
conventions: discovered # (string) 'discovered' par défaut
options:
# ne se connecter à la base que lorsque c'est nécessaire ?
lazy: ... # (bool) false par défaut
# classe du driver de base de données PHP
driverClass: # (string)
# MySQL uniquement : définit sql_mode
sqlmode: # (string)
# MySQL uniquement : définit SET NAMES
charset: # (string) 'utf8mb4' par défaut
# MySQL uniquement : convertit TINYINT(1) en bool
convertBoolean: # (bool) false par défaut
# renvoie les colonnes de date comme objets immuables (depuis la version 3.2.1)
newDateTime: # (bool) false par défaut
# Oracle et SQLite uniquement : format de stockage de la date
formatDateTime: # (string) 'U' par défaut
La clé options peut contenir d'autres options décrites dans la documentation du driver PDO, par exemple :
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Connexions multiples
Dans la configuration, nous pouvons définir plusieurs connexions à des bases de données en les répartissant dans des 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 changé à l'aide
d'autowired: false ou d'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, ainsi que
database.another.connection et database.another.explorer.
Nous passons les services non autowirés explicitement, en nous référant à leur nom :
services:
- UserFacade(@database.another.connection)