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:
- Suporte a um número maior de banco de dados relacionais e não relacionais
- Possibilita tornar um banco relacional, um banco orientado a objetos
- Cria uma portabilidade da estrutura do seu banco de dados através do mapeamento de classes
- 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.