PHP - Uso básico da biblioteca Doctrine DBAL


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.


ver todos os posts
Publicado em 3/09/2019