Páginas

sábado, 30 de junio de 2012

Configurando la Extensión YiiDoctrine2Orm


Buenas en esta entrada indicaré cada uno de los pasos a seguir para configurar la extensión YiiDoctrine2Orm y tener disponible el popular ORM Doctrine2 en una aplicación creada con YiiFramework, esta entrada me surge de el pequeño trabajo que me dio configurarla (ya que en la web oficial no tienen un tutorial paso a paso de la configuración) aunque abriendo los archivos de la extensión es muy intuitiva e incluso te traen el main.php y console.php de ejemplo para que puedas tener esta librería a disposición.

Lo primero que tenemos que hacer claro esta es bajar los archivos de la extensión desde la página del proyecto, también tenemos que tener instalado también Doctrine 2 en nuestro equipo personalmente tengo el ORM en un repositorio separado a la de los proyectos y tengo un link a las carpetas del proyecto para poder hacer las actualizaciones al mismo y que este cambie en todos los proyectos que uso (en desarrollo cuando pasa a producción si es en un servidor externo hay que copiar las librerías).

Una vez tenemos el ORM y la extensión de YiiFRamework, descomprimimos la carpeta d2ormext-1.0.1.zip, en la carpeta "/applicationpath/protected/extensions/", una vez descomprimida ingresaremos a la carpeta "/applicationpath/protected/extensions/Wildkat/YiiExt/DoctrineOrm/vendor/Doctrine/" y hacemos lo siguiente


ln -s /ruta/hacia/doctrine2/lib/vendor/doctrine-common Common
ln -s /ruta/hacia/doctrine2/lib/vendor/doctrine-dbal DBAL
ln -s /ruta/hacia/doctrine2/lib/vendor/doctrine-build-common build-common
ln -s /ruta/hacia/doctrine2/lib/Doctrine/ORM ORM

Ahora nos posicionamos en la carpeta "/applicationpath/protected/extensions/Wildkat/YiiExt/DoctrineOrm/vendor/Symfony" y hacemos el siguiente enlace

ln -s /ruta/hacia/doctrine2/lib/vendor/Symfony/Component Component


Una vez tenemos estos archivos debemos hacer lo siguiente en nuestro archivo applicationpath/protected/config/main.php y applicationpath/protected/config/console.php

agregamos la siguiente linea antes del arreglo

Yii::setPathOfAlias('Wildkat', realpath(dirname(__FILE__) . '/../extensions/Wildkat'));

luego en el indice componente del arreglo agregamos lo siguiente 

'components'=>array(
    // los componentes que ya tengamos configurados
    'doctrine' => array(
     'class' => 'Wildkat\YiiExt\DoctrineOrm\DoctrineContainer',
     'dbal' => array(
         'default' => array(
             'driver' => 'pdo_mysql',
             'host' => 'localhost',
             'dbname' => 'dbname',
             'user' => 'userdb',
             'password' => 'passworddb',
         ),
     ),
     'cache' => array(
         'default' => array(
             'driver' => 'ArrayCache',
             'namespace' => '__app',
         ),
     ),
     'entityManager' => array(
         'default' => array(
             'connection' => 'default',
             'metadataCache' => 'default',
             'queryCache' => 'default',
             'entityPath' => 'application.models.entities',
             'mappingDriver' => 'YamlDriver',
             'mappingPaths' => array(
                 'application.models.entities'
             ),
             'proxyDir' => 'application.data',
             'proxyNamespace' => 'Proxy',
         ),
     ),
 ),
persomalmente cambie la carpeta donde que hace el mapping a la misma donde creo las entidades "application.models.entities", sin embargo cada quien puede configurarla donde desee.


Una vez tenemos esta configuración ahora tenemos que copiar el archivo applicationpath/protected/extensions/Wildkat/YiiExt/DoctrineOrm/commands/DoctrineOrmCommand.php a la carpeta applicationpath/protected/commands para tener disponible en yiic las ordenes para trabajar con doctrine.


Como se indico la extensión es muy intuitiva para configurar, ahora lo que nos queda es usar el ORM en nuestras aplicaciones de YiiFramework si no deseamos trabajar con el Active Record por defecto que trae el mismo, saludos espero que sea de ayuda este post

5 comentarios:

  1. hay unas correcciones que se le tuvieron que hacer a la extensión para funcionar pueden verlo acá http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=10&pid=128#pid128, saludos

    ResponderEliminar
  2. Supongo que por eso de crear enlaces simbolicos no podriamos usar este extension o este metodo en un server compartido donde no tengamos acceso SSH...

    ResponderEliminar
    Respuestas
    1. En teoría un hosting decente debería de ofrecerte ssh, pero si no lo hace, los enlaces simbólicos los tengo para no sobrecargar mi disco con mil copias del ORM, simplemente donde están los enlaces debería de estar los archivos del ORM respectivos y eso debería de funcionar

      Eliminar
  3. Estimado carlos quiero agradecerte por este blog, estoy iniciando con yii y doctrine hasta ahora no puedo hacer correr nada podrias ayudarme y pasarme un codigo de ejemplo corriendo para que lo pueda montar en mi local host tengo la extension y el orm descargado pero no lo puedo configurar. agradecere mucho tu ayuda un gran abrazo.
    mi email es micky.poma@gmail.com

    ResponderEliminar
  4. si sigues lo que indique en el post, unido con esta respuesta

    http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=10&pid=128#pid128

    debería de funcionarte el doctrine con Yii sin ningún inconveniente

    ResponderEliminar