Doctrine es un ORM que nos permite abstraernos totalmente de la base de datos y trabajar directamente con objetos de forma más rápida y optima. Veamos como instalar Doctrine 2 en Zend Framework 2. El ORM que instalaremos contará con menos opciones de consola que las que tiene en Symfony pero al fin y al cabo el código funcionará de forma similar.
Tendremos que tener instalado ZF2 y además git y todas las herramientas que requiere.
En primer lugar añadirnos los módulos de Doctrine a nuestro fichero composer.json
de la raíz del proyecto.
En mi caso, mi fichero composer.json queda así:
{ "name": "zendframework/skeleton-application", "description": "Skeleton Application for ZF2", "license": "BSD-3-Clause", "keywords": [ "framework", "zf2" ], "homepage": "http://framework.zend.com/", "require": { "php": ">=5.3.3", "zendframework/zendframework": "2.3.*", "doctrine/doctrine-module": "dev-master", "doctrine/doctrine-orm-module": "dev-master" } }
Ahora instalaremos los módulos que acabamos de añadido ejecutando el comando php composer.phar update
.
Para que Zend pueda utilizar estos módulos tenemos que añadirlos al array «modules» de la configuración principal de la aplicación. Los añadimos al fichero config/application.config.php.
<?php return array( // This should be an array of module namespaces used in the application. 'modules' => array( 'DoctrineModule', 'DoctrineORMModule', 'Application', ), //Resto de código del fichero
Ahora tenemos que crear un fichero para la configuración de la base de datos que utilizará Doctrine. Creamos el fichero config/autoload/doctrine.local.php
<?php return array( 'doctrine' => array( 'connection' => array( 'orm_default' => array( 'params' => array( 'host' => 'localhost', 'port' => 3306, 'user' => 'root', 'password' => '', 'dbname' => 'doctrine_blog', 'driverOptions' => array( \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ), ) ) ) ) );
Por último añadimos la configuración de Doctrine al módulo con el que estemos trabajando. Le indicaremos donde estarán las entidades. Entramos al fichero module.config.php de nuestro módulo, en mi caso Application.
Añadimos este array:
'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' ) ))),
Ahora ya podremos empezar a utilizar la consola de Doctrine.
Podremos empezar a crear entidades y todo lo que nos permite Doctrine.
Más información:
Zend Framework 2 and Doctrine 2 ORM Integration
Doctrine ORM Official documentation