Configuração do banco de dados

Visão geral das opções de configuração para Nette Database.

Se você não estiver usando o framework completo, mas apenas esta biblioteca, leia como carregar a configuração.

Conexão única

Configuração de uma única conexão de banco de dados:

database:
	# DSN, a única chave obrigatória
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Cria os serviços Nette\Database\Connection e Nette\Database\Explorer, que geralmente passamos por autowiring, ou por referência ao seu nome.

Outras configurações:

database:
	# exibir o painel do banco de dados na Tracy Bar?
	debugger: ...     # (bool) padrão é true

	# exibir EXPLAIN das consultas na Tracy Bar?
	explain: ...      # (bool) padrão é true

	# permitir autowiring para esta conexão?
	autowired: ...    # (bool) padrão é true na primeira conexão

	# convenções de tabela: discovered, static ou nome da classe
	conventions: discovered  # (string) padrão é 'discovered'

	options:
		# conectar ao banco de dados apenas quando necessário?
		lazy: ...     # (bool) padrão é false

		# classe PHP do driver do banco de dados
		driverClass:  # (string)

		# apenas MySQL: define sql_mode
		sqlmode:      # (string)

		# apenas MySQL: define SET NAMES
		charset:      # (string) padrão é 'utf8mb4'

		# apenas MySQL: converte TINYINT(1) para bool
		convertBoolean:  # (bool) padrão é false

		# retorna colunas de data como objetos imutáveis (desde a versão 3.2.1)
		newDateTime:  # (bool) padrão é false

		# apenas Oracle e SQLite: formato para armazenar data
		formatDateTime: # (string) padrão é 'U'

Na chave options, você pode especificar outras opções encontradas na documentação dos drivers PDO, como por exemplo:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Múltiplas conexões

Na configuração, também podemos definir várias conexões de banco de dados dividindo-as em seções nomeadas:

database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'

O autowiring está habilitado apenas para os serviços da primeira seção. Isso pode ser alterado usando autowired: false ou autowired: true.

Serviços DI

Estes serviços são adicionados ao contêiner de DI, onde ### representa o nome da conexão:

Nome Tipo Descrição
database.###.connection Nette\Database\Connection conexão com o banco de dados
database.###.explorer Nette\Database\Explorer Database Explorer

Se definirmos apenas uma conexão, os nomes dos serviços serão database.default.connection e database.default.explorer. Se definirmos várias conexões como no exemplo acima, os nomes corresponderão às seções, ou seja, database.main.connection, database.main.explorer e também database.another.connection e database.another.explorer.

Passamos serviços não autowired explicitamente por referência ao seu nome:

services:
	- UserFacade(@database.another.connection)
versão: 4.0