Mostrando entradas con la etiqueta YAML. Mostrar todas las entradas
Mostrando entradas con la etiqueta YAML. Mostrar todas las entradas

domingo, 27 de febrero de 2011

Generar YAML para Doctrine utilizando MySQL Workbench

Una de las formas más sencillas de generar YAML para Doctrine y así ver casos reales y concretos, es utilizar MySQL Workbench Doctrine Plugin. Éste nos permite generar YAML desde la famosa herramienta MySQL Workbench (http://wb.mysql.com/a partir de una base de datos MySQL que ya tengamos .

Lógicamente el primer paso es instalar el mencionado plugin. Se puede encontrar en la siguiente página:

http://code.google.com/p/mysql-workbench-doctrine-plugin.

Hay que ir a la pestaña "Download" y descargar un fichero con un nombre del tipo "MySQL-Workbench-Doctrine-Plugin-x.x.x.zip", que contiene el fichero DoctrineExport.grt.lua. Ahora hay que ir a "Tools"->"Install plugin/Module File" del MySQL Workbench y tomar el fichero.

Una vez hecho esto he tenido que reiniciar la aplicación para que me aparecieran en "Plugins"->"Catalog" las dos nuevas opciones "Doctrine Export". Ahora los pasos a seguir son los siguientes:
  • Ir a "Database"->"Reverse Engineer"
  • Mediante el Wizard que aparece seleccionar la base de datos que deseemos y completar el proceso.
  • Una vez nos aparece el diagrama con todas las tablas ir a "Plugins"->"Catalog"->"Doctrine Export".
Y ya tenemos nuestros fichero .yml que podemos visualizar simplemente con, por ejemplo, WordPad .

sábado, 26 de febrero de 2011

¿Propel o Doctrine?

Una de las muchas ventajas de Symfony es que utiliza "Mapeo de Objetos a Base de datos" (ORM). Citando la guía:
Las bases de datos siguen una estructura relacional. PHP 5 y Symfony por el contrario son orientados a objetos. Por este motivo, para acceder a la base de datos como si fuera orientada a objetos, es necesario una interfaz que traduzca la lógica de los objetos a la lógica relacional. Esta interfaz se denomina "mapeo de objetos a bases de datos" (ORM, de sus siglas en inglés "object-relational mapping").
Aunque en la guía se indica que Propel es el ORM por defecto de Symfony, parece que ha sido eclipsado últimamente por Doctrine. De hecho éste último tiene varias ventajas respecto al primero como se indica en páginas como esta: http://www.hasheado.com/doctrine-vs-propel.html.

Hay una comparación "oficial" en esta otra página: http://trac.symfony-project.org/wiki/ComparingPropelAndDoctrine.

Mi primera impresión por la información que he encontrado es que Doctrine es la mejor opción. Además, solo el hecho de que esté basado en YAML y no en XML creo que ya representa una ventaja muy importante a la hora de trabajar. YAML es mucho más inteligible para un humano que el XML.

Pero dejando de lado opiniones e impresiones... ¡ojo! ¡Doctrine es el ORM oficial para Symfony 2!.