A biblioteca Doctrine DBAL oferece uma camada adicional por cima da PDO, com isso ela disponibiliza uma API de alto nível que simplifica operações que são mais verbosas e repetitivas com o PDO. Essa API conta com alguns métodos bastante úteis para fazer operações básicas de CRUD.
Criação da conexão
Antes de começar, é preciso instalar a biblioteca com o Composer, para isso é preciso rodar o seguinte comando no terminal:
composer require "doctrine/dbal"
Para criar o objeto referente a conexão, a biblioteca disponibiliza o método estático getConnection
da classe DriverManager
. Esse método espera um array com as credenciais as informações para fazer a conexão com o banco de dados.
$dbal = \Doctrine\DBAL\DriverManager::getConnection([ 'dbname' => 'nomedobanco', 'user' => 'usuario', 'password' => 'senha', 'host' => 'localhost', 'driver' => 'pdo_mysql', 'driverOptions' => [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ] ]);
OBS: a opção definida com a constante MYSQL_ATTR_INIT_COMMAND
da PDO serve para que o charset usado seja UTF-8.
Operações de CRUD
Método insert
Parâmetros:
- Primeiro: nome da tabela do banco de dados.
- Segundo: array associativo com o nome das colunas e seus valores
$dbal->insert('noticias', [ 'Titulo' => 'Notícia nova!', 'Texto' => 'Texto da notícia nova.' ]);
Para obter o id do registro insertido, basta usar o método lastInsertId
$lastInsertId = $dbal->lastInsertId();
Método update
Parâmetros:
- Primeiro: nome da tabela do banco de dados.
- Segundo: array associativo com o nome das colunas e seus valores.
- Terceiro: array associativo equivalente a clausula
WHERE
do SQL.
$dbal->update('noticias', [ 'Titulo' => 'Notícia nova (atualizada)!', 'Texto' => 'Texto da notícia nova (atualizada).' ], ['Id' => 1]);
Método delete
Parâmetros:
- Primeiro: nome da tabela do banco de dados.
- Segundo: array associativo com a coluna e o valor que será utilizado como critério para a exclusão.
$dbal->delete('noticias', [ 'Id' => 1 ]);
Busca de dados
Buscar vários registros:
$rows = $dbal->fetchAll('SELECT * FROM noticias');
Buscar um registro:
$rows = $dbal->fetchAssoc('SELECT Titulo FROM noticias WHERE Id = :id', [ 'Id' => 1 ]);
Buscar uma coluna de um registro:
$title = $dbal->fetchColumn('SELECT Titulo FROM noticias WHERE Id = :id', [ 'Id' => 1 ]);
Conclusão
A biblioteca Doctrine DBAL é uma ótima opção para o acesso ao banco de dados com PHP. Através dela as operações básicas são simplicadas, o que é de grande ajuda para agilizar as coisas.
Top comments (0)