Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github

Como usar a Camada DBAL do Doctrine

Note

Este artigo é sobre a camada DBAL do Doctrine. Normalmente, você vai trabalhar com a camada de alto nível ORM do Doctrine, que simplesmente usa o DBAL, nos bastidores, para comunicar-se com o banco de dados. Para ler mais sobre o ORM Doctrine, consulte “Bancos de Dados e Doctrine”.

A Camada de Abstração de Banco de Dados Doctrine (DBAL) é uma camada de abstração que fica situada no topo do PDO e oferece uma API intuitiva e flexível para se comunicar com os bancos de dados relacionais mais populares. Em outras palavras, a biblioteca DBAL torna mais fácil a execução de consultas e de outras ações de banco de dados.

Tip

Leia a Documentação oficial do DBAL para aprender todos os detalhes e as capacidades da biblioteca DBAL do Doctrine.

Para começar, configure os parâmetros de conexão do banco de dados:

Para ver todas as opções de configuração do DBAL, consulte Configurações do Doctrine DBAL.

Você pode acessar a conexão DBAL do Doctrine acessando o serviço database_connection:

class UserController extends Controller
{
    public function indexAction()
    {
        $conn = $this->get('database_connection');
        $users = $conn->fetchAll('SELECT * FROM users');

        // ...
    }
}

Registrando Tipos de Mapeamento Personalizados

Você pode registrar tipos de mapeamento personalizados através de configuração do symfony. Eles serão adicionados à todas as conexões configuradas. Para mais informações sobre tipos de mapeamento personalizados, leia a seção Tipos de Mapeamento Personalizados na documentação do Doctrine.

Registrando Tipos de Mapeamento Personalizados no SchemaTool

O SchemaTool é usado para inspecionar o banco de dados para comparar o esquema. Para realizar esta tarefa, ele precisa saber que tipo de mapeamento precisa ser usado para cada um dos tipos do banco de dados. O registro de novos pode ser feito através de configuração.

Vamos mapear o tipo ENUM (por padrão não suportado pelo DBAL) para um tipo de mapeamento string: