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)
versión: 4.x