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)
versión: 4.0