Symfony 1.2 + Propel 1.3 + Oracle (Parte 2)

Ahora que ya tenemos el módulo PDO_OCI funcionando, podemos intentar hacer una prueba en Symfony 1.2 con Propel 1.3. Después de dar muchas vueltas, he llegado a la conclusión de que el formato para databases.yml es el siguiente:

all:

propel:

class: sfPropelDatabase

param:

classname: PropelPDO

phptype: oracle

dsn: oci:dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%

username: %USUARIO%

password: %CONTRASEÑA%

encoding: utf8

persistent: true

pooling: true

(No consigo que el maldito WordPress indente correctamente el código anterior así que recuerda que la jerarquía es: all >> propel >> param >> resto)

El formato de propel.ini sería el siguiente:

propel.database            = oracle

propel.database.driver     = oracle

propel.database.url        = oci:dbname=//%IP_DEL_SERVIDOR%:%PUERTO_DEL_SERVIDOR%/%BASE_DE_DATOS%

propel.database.creole.url = ${propel.database.url}

propel.database.user       = %USUARIO%

propel.database.password   = %CONTRASEÑA%

propel.database.encoding   = utf8

Lo último que necesitas para que la ingeniería inversa funcione es un parseador de estructura de base de datos para bases de datos de Oracle. Propel 1.3 no trae uno, así que puedes usar el que un servidor ha preparado convenientemente: Oracle Schema Parser (PHP5 script) (Bórrale la extensión “doc” y déjalo en un directorio “lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle” nuevo que tienes que crear en la instalación de Symfony).

Con esto y un bizcocho, ya deberías ser capaz de ejecutar la tarea “propel:build-schema” :)

Retweet
Publicado el: 17 febrero 2009
Categorías: General
Etiquetas: , , , , , ,
Comentarios: 3 comentarios.
Comentarios
Comentario de Isidro - 25 de febrero de 2009 a las 11:55

Muy interesante, muy interesante… voy a empezar a jugar con Symfony 1.2 y Oracle, y parte de la info del pdo_oci yo también la he sufrido :|

Un saludo

Isidro

Comentario de ggalmazor - 25 de febrero de 2009 a las 12:02

Hola Isidro!

Tengo que avisarte de que te faltará el parseador de schemas de Oracle ya que no viene en el paquete de propel.

Estoy coordinándome con la gente de Propel para que publiquen en su repositorio los cambios que he tenido que realizar sobre mi instalación de Symfony y propel para que todo funcione correctamente.

Me complace decirte que en los bancos de prueba en los que estoy probándolo todo, mis clases funcionan de maravilla :)

Espero que en los próximos días se pueda añadir a la versión de Propel 1.3 mi contribución con un sistema de ingeniería inversa para Oracle completamente funcional.

Comentario de Roberto Carlos - 3 de junio de 2009 a las 18:44

estuve investigando sobre el tema de Symfony + Oracle
y encontré ke en el fichero propel.ini debía modificar estas líneas:

propel.database = oracle
propel.database.createUrl = oracle://despacho_mti:[email protected]/
propel.database.url = oracle://despacho_mti:[email protected]/

Donde,
despacho_Mti: es el nombre del esquema en la base de datos
pass: la contraseña
CADI.UCI.CU : la variable declarada en /usr/lib/oracle/network/admin/tnsname.ora

también modificar en databases.yml la línea:

dsn: oracle://despacho_mti:[email protected]/

y ya está, ahora se puede generar el schema
>symfony propel-build schema xml

PD: tener en cuenta editar el schema antes de generar el modelo, en mi caso solo puse esta línea:

pero si tienes alguna secuencia en la base de datos, hay ke buskar en el schema.xml los campos ke llevan la secuencia y agregarle la propiedad autoIncrement = “true”

a mi me funcionó…. suerte