Nette Documentation Preview

syntax
Configuración de la base de datos
*********************************

.[perex]
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 |bootstrap:].


Conexión única .[#toc-single-connection]
----------------------------------------

Configurar una única conexión a la base de datos:

```neon
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 |dependency-injection:autowiring] o haciendo referencia a [su |#DI Services] nombre.

Otros ajustes:

```neon
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 |https://www.php.net/manual/en/pdo.drivers.php], tales como:

```neon
database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true
```


Conexiones Múltiples .[#toc-multiple-connections]
-------------------------------------------------

En la configuración podemos definir más conexiones a bases de datos dividiéndolas en secciones con nombre:

```neon
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 .[#toc-di-services]
--------------------------------

Estos servicios se añaden al contenedor DI, donde `###` representa el nombre de la conexión:

| Nombre | Tipo | Descripción
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | Conexión a la base de datos
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Database Explorer |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:

```neon
services:
	- UserFacade(@database.another.connection)
```

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)