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', ), ), ),
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
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
ResponderEliminarSupongo que por eso de crear enlaces simbolicos no podriamos usar este extension o este metodo en un server compartido donde no tengamos acceso SSH...
ResponderEliminarEn 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
EliminarEstimado 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.
ResponderEliminarmi email es micky.poma@gmail.com
si sigues lo que indique en el post, unido con esta respuesta
ResponderEliminarhttp://www.yiiframeworkenespanol.org/foro/showthread.php?tid=10&pid=128#pid128
debería de funcionarte el doctrine con Yii sin ningún inconveniente