Configuración de la base de datos
Resumen de las opciones de configuración para Nette Database.
Si no está utilizando todo el framework, sino sólo esta librería, lea cómo cargar la configuración.
Una 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: ...
Crea los servicios Nette\Database\Connection
y Nette\Database\Explorer
, que normalmente pasamos
mediante autowiring, o por referencia a su nombre.
Otros ajustes:
database:
# ¿mostrar el panel de base de datos en Tracy Bar?
debugger: ... # (bool) por defecto es true
# ¿mostrar EXPLAIN de las consultas en Tracy Bar?
explain: ... # (bool) por defecto es true
# ¿habilitar autowiring para esta conexión?
autowired: ... # (bool) por defecto es true para la primera conexión
# convenciones de tabla: discovered, static o nombre de clase
conventions: discovered # (string) por defecto es 'discovered'
options:
# ¿conectarse a la base de datos solo cuando sea necesario?
lazy: ... # (bool) por defecto es false
# Clase PHP del controlador de base de datos
driverClass: # (string)
# solo MySQL: establece sql_mode
sqlmode: # (string)
# solo MySQL: establece SET NAMES
charset: # (string) por defecto es 'utf8mb4'
# solo MySQL: convierte TINYINT(1) a bool
convertBoolean: # (bool) por defecto es false
# devuelve columnas de fecha como objetos inmutables (desde la versión 3.2.1)
newDateTime: # (bool) por defecto es false
# solo Oracle y SQLite: formato para almacenar la fecha
formatDateTime: # (string) por defecto es 'U'
En la clave options
, puede especificar otras opciones que se encuentran en la documentación de los controladores PDO, como por ejemplo:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Múltiples conexiones
En la configuración, también podemos definir múltiples conexiones de base de datos dividié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 solo está habilitado para los servicios de la primera sección. Esto se puede cambiar usando
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 con la base de datos |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Si definimos solo una conexión, los nombres de los servicios serán database.default.connection
y
database.default.explorer
. Si definimos múltiples 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
.
Pasamos los servicios no autowired explícitamente por referencia a su nombre:
services:
- UserFacade(@database.another.connection)