Banco de dados Nette
O Nette Database é uma camada de banco de dados poderosa e elegante para PHP, com foco na simplicidade e em recursos inteligentes. Ele oferece duas maneiras complementares de trabalhar com os dados: usando o Explorer para desenvolvimento rápido ou a maneira SQL para controle total das consultas.
Modo SQL
- Consultas seguras e parametrizadas
- Controle preciso sobre a estrutura das consultas SQL
- Ideal para escrever consultas complexas com funções avançadas
- Otimize o desempenho usando funções SQL específicas
Caminho do explorador
- Desenvolvimento rápido sem escrever SQL
- Tratamento intuitivo de relacionamentos entre tabelas
- Otimização automática de consultas
- Excelente para interações rápidas e convenientes com o banco de dados
Instalação
Você pode fazer download e instalar a biblioteca usando o Composer:
Bancos de dados compatíveis
O Nette Database é compatível com os seguintes bancos de dados:
Servidor de banco de dados | Nome DSN | Suporte ao Explorer | |
---|---|---|---|
MySQL (>= 5.1) | mysql | YES | |
PostgreSQL (>= 9.0) | pgsql | YES | |
SQLite 3 (>= 3.8) | sqlite | YES | |
Oracle | oci | NÃO | SIM |
MS SQL (PDO_SQLSRV) | sqlsrv | SIM | |
MS SQL (PDO_DBLIB) | mssql | NÃO | |
ODBC | odbc | NÃO |
Duas abordagens para o trabalho com banco de dados
Com o Nette Database, você pode escrever consultas SQL diretamente (modo SQL) ou deixar que o SQL seja gerado automaticamente (modo Explorer). Vamos ver como as duas abordagens resolvem as mesmas tarefas:
Modo SQL – Escrevendo consultas SQL
Modo Explorer – Geração automática de SQL
A abordagem do Explorer gera e otimiza as consultas SQL automaticamente. No exemplo acima, o exemplo do modo SQL gera N+1 consultas (uma para os autores e outra para os livros de cada autor), enquanto o Explorer executa apenas duas consultas otimizadas – uma para os autores e outra para todos os seus livros.
Você pode combinar livremente as duas abordagens em seu aplicativo, conforme necessário.
Conexão e configuração
Para se conectar ao banco de dados, basta criar uma instância da classe Nette\Database\Connection:
O parâmetro $dsn
(Data Source Name) segue o mesmo formato usado pelo PDO, por exemplo,
host=127.0.0.1;dbname=test
. Se a conexão falhar, será lançado o erro
Nette\Database\ConnectionException
.
No entanto, um método mais conveniente é usar a configuração do aplicativo. Adicione uma
seção database
e os objetos necessários serão criados, inclusive um painel de banco de dados na Tracy Debug Bar.
Depois disso, o objeto de conexão pode ser recuperado como um serviço do contêiner DI, por exemplo:
Para obter mais informações, consulte configuração do banco de dados.
Criação manual do Explorer
Se não estiver usando o contêiner Nette DI, você poderá criar manualmente uma instância do
Nette\Database\Explorer
:
Gerenciamento de conexões
Quando você cria um objeto Connection
, ele se conecta ao banco de dados automaticamente. Se quiser atrasar a
conexão, ative o modo preguiçoso na configuração, definindo lazy
, ou
faça-o desta forma:
Para gerenciar a conexão, use os métodos connect()
, disconnect()
e reconnect()
.
connect()
estabelece uma conexão se ela ainda não tiver sido estabelecida e pode lançar umNette\Database\ConnectionException
.disconnect()
desconecta-se do banco de dados.reconnect()
desconecta e, em seguida, reconecta-se ao banco de dados e também pode lançar umNette\Database\ConnectionException
.
Além disso, você pode monitorar os eventos de conexão usando o evento onConnect
, que é uma matriz de retornos
de chamada executados após a conexão com o banco de dados.
Barra de depuração Tracy
Se você usa o Tracy, o painel Banco de dados na Barra de depuração é ativado automaticamente. Ele exibe todas as consultas executadas, seus parâmetros, o tempo de execução e o local no código em que foram chamadas.
