Doctrine ORM — Instalando e configurando

Rafael Mello
PHPRio
Published in
2 min readNov 2, 2016

Hoje estarei falando do Doctrine 2, uma dos melhores libraries que implementação o padrão ORM(Object Relational Mapper) no PHP.

Para quem não conhece, sistemas ORM são usados para criar uma “ponte” entre o banco de dados e sua linguagem de programação OOP. Basicamente, criamos classes chamadas de “entidades” na qual na maioria das vezes representam tabelas. Suas variáveis, representam as devidas colunas respectiva da tabela.

Frameworks ORM possuem diversas vantagens, tais como utilizar recursos do OOP(Heranças, Interfaces, Polimorfismo, etc…), gerenciar a estrutura do seu banco de dados de acordo com as entidades criadas e utilizar Queries DQL(inspiradas no Hibernate HQL do Java), onde utiliza-se apenas um formato de query independente do SGBD que esteja utilizado.

Atualmente o Doctrine ORM está na versão 2.3 estável e poderá ser utilizado em diversos frameworks PHP, como Symfony, Zend Framework e Laravel.

Nesse post, estarei ensinando a instalar o Doctrine ORM no Zend Framework. No caso do Symfony, o Doctrine por padrão já é utilizado para gerenciamento de banco de dados, no entanto, só é necessário configurar a framework para se conectar ao seu banco de dados.

Zend Framework

A equipe do Doctrine oficialmente desenvolveu um módulo para o Zend Framework 2(https://github.com/doctrine/DoctrineORMModule). Para instalar, basta apenas adicionar ao seu arquivo composer a chamada para o “doctrine/doctrine-orm-module” em sua versão “0.*”. Você poderá utilizar o comando abaixo se preferir.

$ composer require doctrine/doctrine-orm-module 0.*

Após adicionado, é necessário atualizar sua framework pelo composer.

$ composer update

Adicione em os módulos “DoctrineModule” e “DoctrineORMModule” em seu arquivo config/application.config.php, em seguida, crie o diretório data/DoctrineORMModule/Proxy e atribua permissão de escrita ao mesmo.

Para finalizar a instalação, adicione a configuração abaixo em cada módulo(Ex. module/Application/config/module.config.php no caso do módulo se chamar Application) que utilize entidades do Doctrine. Essa configuração fará com que o Zend reconheça as entidades do Doctrine.

<?php
return (
'doctrine' => array(
'driver' => array(
'application_entities' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(
__DIR__ . '/../src/Application/Entity'
)
),
'orm_default' => array(
'drivers' => array(
'Application\Entity' => 'application_entities'
)
)
)
)
);

Configure o acesso ao banco de dados utilizando a configuração abaixo. Essa configuração deverá estar em config/autoload/doctrine.local.php. Substitua PDOMySql para o driver relacionado ao SGBD utilizado. Segue a lista.

  • PDOPgSql — PostgreSQL
  • PDOMySql — MySQL/MariaDB
  • PDOOracle — Oracle
  • PDOSqlsrv — SQL Server
  • PDOIbm — IBM DB2
<?php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'username',
'password' => 'password',
'dbname' => 'database',
)
)
)
),
);

No próximo post estarei explicando criar uma entidade e utilizar comandos do Doctrine no Symfony e no Zend. Espero que tenham gostado, até a próxima pessoal!

--

--

Rafael Mello
PHPRio
Writer for

“Do or do not. There is no try.” — Yoda(Star Wars)