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)