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)