Integrando o Doctrine ORM e Laravel 5 [parte-1]

Integrando o Doctrine ORM e Laravel 5 [parte-1]

28/05/2015 Jonathan André Schweder 4 min de leitura

Fala galera, estou a um tempinho sem escrever nada, vida corrida, faculdade e tudo mais, porém trago a vocês hoje um breve tutorial de como integrar o Doctrine ao Laravel 5, vamos nessa!

O que é o Doctrine ?

Antes de mais nada gostaria de falar um pouco sobre o projeto Doctrine. O Doctrine é um conjunto de vários projetos para se trabalhar especificamente com banco de dados, sejam ele relacionais como o MySQL e PostgreSQL ou não relacionais como o MongoDB.

A grande vantagem de se usar suas bibliotecas é o ganho de abstração, facilmente você pode trocar entre bancos sem problema nenhum, e caso você use o Doctrine ORM, você pode recriar a estrutura do seu banco de dados a partir de suas classes mapeadas, e como de é de se esperar, você não precisará escrever diretamente nenhum comando SQL.

Por que usar o Doctrine no Laravel se já existe o Eloquent ?

Dado uma breve explicação do que é o Doctrine, e caso você já conheça ou trabalhe com o Laravel, provavelmente você vai se perguntar, por que diabos eu usaria o Doctrine se o Laravel vem com o Eloquent por padrão? Bem, para dizer a verdade tudo depende, no meu caso por exemplo um dos maiores motivos de usar o Doctrine inicialmente foi o suporte ao banco de dados Sybase, contudo, e com o tempo, percebi que o Doctrine estava muito mais avançado do que o Eloquent, o que não é de se estranhar já que o Doctrine é um conjunto de bibliotecas dedicadas para um único propósito, além de ser um projeto mais antigo que o próprio Laravel, e com uma gama muito maior de projetos que o utilizam, abaixo eu listo algumas poucas vantagens que eu identifiquei no Doctrine ORM especificamente:

  1. Suporte a um número maior de banco de dados relacionais e não relacionais
  2. Possibilita tornar um banco relacional, um banco orientado a objetos
  3. Cria uma portabilidade da estrutura do seu banco de dados através do mapeamento de classes
  4. Maior gama de projetos que o utilizam, exemplo: Symfony

Integrando no Laravel

Obs.: Não estarei aqui mostrando inicialmente grandes detalhes de como utilizar o Doctrine, mas para os interessados existe um tutorial no site do projeto disponível neste link.

Mãos na massa

Como de praxe vamos criar um novo projeto usando o composer, considerarei que você já o possui instalado, caso não, sugiro ver esse post, após tudo instalado, execute o seguinte comando:

    composer create-project laravel/laravel --prefer-dist tutorial-doctrine

Isto criará uma pasta chamada “tutorial-doctrine”, fará o download do Laravel e fará a instalação de suas dependências.

A seguir precisaremos adicionar a dependência do Doctrine ORM, para isso execute o comando abaixo no terminal, na pasta que acabou de ser criada.

    composer require doctrineorm ~2.5

Após o termino da instalação, crie um arquivo chamado “cli-config.php” na pasta raiz do projeto. Esse arquivo basicamente fará a configuração e possibilitará o acesso via console das funcionalidades do Doctrine. Depois disso copie o código abaixo para o arquivo:

Agora precisaremos criar um ServiceProvider, ou uma classe que dará acesso ao EntityManager do Doctrine, para isso execute o comando abaixo na raiz do projeto.

    php artisan make:provider DoctrineServiceProvider

Isto criará um novo arquivo em “app/Providers”, agora copie o código abaixo para o arquivo.

Obs.: O código está comentado e caso necessitem tirar alguma dúvida, por favor escrevam nos comentários estarei atendendo o quanto antes for possível.

Agora para testarmos vamos alterar o arquivo de configuração de conexão com banco de dados do Laravel em “configdatabase.php”. Basicamente precisamos alterar duas coisas: mudar o valor da posição “default” para “sqlite” e alterar o driver da posição “sqlite” na lista de conexões de “sqlite” para utilizar o “pdo_sqlite”, que é o driver do Doctrine para se trabalhar com o SQLite.

Por fim apenas execute o comando abaixo para criar o arquivo do banco de dados na pasta “storage”.

    touch storage/database.sqlite

Finalmente vamos rodar um comando do Doctrine para verificar se está tudo certo.

    vendorbindoctrine orm:validate-schema

Caso esteja tudo certo será impresso no terminal uma mensagem dizendo que está tudo OK.

Bem pessoal, essa foi um introdução da integração do Doctrine com o Laravel 5, aguardem os próximos posts, segam-nos nas redes e até a próxima o.