Configuración de la base de datos
Visión general de las opciones de configuración de la Base de Datos Nette.
Si no está utilizando todo el framework, sino sólo esta librería, lea cómo cargar la configuración.
Conexión única
Configurar una única conexión a la base de datos:
database:
# DSN, only mandatory key
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Crea los servicios Nette\Database\Connection
y Nette\Database\Explorer
, que suelen pasarse por autocableado o haciendo referencia a su nombre.
Otros ajustes:
database:
# shows database panel in Tracy Bar?
debugger: ... # (bool) defaults to true
# shows query EXPLAIN in Tracy Bar?
explain: ... # (bool) defaults to true
# to enable autowiring for this connection?
autowired: ... # (bool) defaults to true for first connection
# table conventions: discovered, static, or class name
conventions: discovered # (string) defaults to 'discovered'
options:
# to connect to the database only when needed?
lazy: ... # (bool) defaults to false
# PHP database driver class
driverClass: # (string)
# sólo MySQL: sets sql_mode
sqlmode: # (string)
# sólo MySQL: sets SET NAMES
charset: # (string) defaults to 'utf8mb4'
# sólo MySQL: convierte TINYINT(1) a bool
convertBoolean: # (bool) por defecto false
# devuelve columnas de fecha como objetos inmutables (desde la versión 3.2.1)
newDateTime: # (bool) por defecto false
# sólo Oracle and SQLite: date format
formatDateTime: # (string) defaults to 'U'
La clave options
puede contener otras opciones que se pueden encontrar en la documentación del controlador PDO, tales como:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Conexiones Múltiples
En la configuración podemos definir más conexiones a bases 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 autocableado sólo está activado para los servicios de la primera sección. Esto puede cambiarse utilizando
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 servicio 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 luego
database.another.connection
y database.another.explorer
.
Pasamos los servicios no autenticados explícitamente haciendo referencia a su nombre:
services:
- UserFacade(@database.another.connection)