Configuración de la base de datos
Resumen de las opciones de configuración de Nette Database.
Si no usa el framework entero, sino solo esta biblioteca, lea cómo cargar la configuración.
Una sola conexión
Configuración de una única conexión a la base de datos:
database:
# DSN, la única clave obligatoria
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Esto crea los servicios Nette\Database\Connection y Nette\Database\Explorer, que normalmente se pasan
mediante autowiring o refiriéndose a su nombre.
Otros ajustes:
database:
# ¿mostrar el panel de la base de datos en la Tracy Bar?
debugger: ... # (bool) activado de forma predeterminada si Tracy está activa
# ¿mostrar el EXPLAIN de las consultas en la Tracy Bar?
explain: ... # (bool) el valor predeterminado es true
# ¿activar el autowiring para esta conexión?
autowired: ... # (bool) true de forma predeterminada para la primera conexión
# convenciones de las tablas: discovered, static o el nombre de una clase
conventions: discovered # (string) el valor predeterminado es 'discovered'
options:
# ¿conectarse a la base de datos solo cuando haga falta?
lazy: ... # (bool) el valor predeterminado es false
# clase del driver de base de datos de PHP
driverClass: # (string)
# solo MySQL: establece sql_mode
sqlmode: # (string)
# solo MySQL: establece SET NAMES
charset: # (string) el valor predeterminado es 'utf8mb4'
# solo MySQL: convierte TINYINT(1) a bool
convertBoolean: # (bool) el valor predeterminado es false
# devuelve las columnas de fecha como objetos inmutables (desde la versión 3.2.1)
newDateTime: # (bool) el valor predeterminado es false
# solo Oracle y SQLite: formato para guardar la fecha
formatDateTime: # (string) el valor predeterminado es 'U'
La clave options puede contener otras opciones que encontrará en la documentación del driver PDO, por ejemplo:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Varias conexiones
En la configuración podemos definir varias conexiones a bases de datos repartiéndolas en secciones con nombre:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
El autowiring está activado solo para los servicios de la primera sección. Se puede cambiar con autowired: false
o autowired: true.
Servicios DI
Estos servicios se añaden al contenedor DI, donde ### representa el nombre de la conexión:
| Nombre | Tipo | Descripción |
|---|---|---|
database.###.connection |
Nette\Database\Connection | conexión a la base de datos |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Si definimos una sola conexión, los nombres de los servicios serán database.default.connection y
database.default.explorer. Si definimos varias conexiones como en el ejemplo anterior, los nombres corresponderán a
las secciones, es decir, database.main.connection, database.main.explorer, y también
database.another.connection y database.another.explorer.
Los servicios que no están en el autowiring se pasan explícitamente refiriéndose a su nombre:
services:
- UserFacade(@database.another.connection)