2009-11-08 11 views
14

Acaba de comenzar con Doctrine ORM for PHP (v1.1.5) y se encontró con algo inesperado.Los modelos generados de Doctrine respetan el caso, pero Yaml generado no

estoy generando modelos de la db (MySQL 4) usando:

Doctrine::generateModelsFromDb($pathToModels); 

Entonces generar YAML de los modelos usando:

Doctrine::generateYamlFromModels($pathToSchema . '/schema.yml', $pathToModels); 

En los modelos generados, los nombres de columna (como se define en hasColumn()) use el mismo caso para los campos que en el db. Todo bien.

Pero en el YAML generado, los nombres de las columnas son minúsculas, independientemente del caso del modelo.

No parece haber ninguna opción disponible en el método generateYamlFromModels() que podría usar para modificar esto. ¿Hay algún otro atributo que deba establecer en algún lugar, tal vez a nivel de conexión, a nivel de gerente, etc.? ¿Podría ser un error?

Cualquier idea muy apreciada. Gracias y ¡salud!

+0

que había visto la pregunta Doctrine ORM: Models not respecting case, pero se perdió este bit en una de las respuestas:

En cuanto a los nombres de campo, que se puede asignar a camelCase utilizando la función de alias del esquema YAML archivo (nombre: user_id como userId).
Entonces, ¿eso es todo lo que hay? ¿No hay forma de respetar el caso en la generación de Yaml, pero puedo ajustar manualmente el YAML usando aliasing? –

+0

Por Dios, ¿qué pasa publicando públicamente una pregunta que hace que las respuestas aparezcan al instante? La misma respuesta que la anterior (http://stackoverflow.com/questions/1501501/doctrine-orm-models-not-respecting-case/1620387#1620387) notes "Además, puede automatizar el alias de campos mediante el desarrollo de tareas personalizadas para Doctrine. ". Buscaré más y tal vez un seguimiento allí si es necesario. Lo siento. [Por favor, no me menosprecies. Estoy al borde de los privilegios de comentarios.] –

+1

Parece que Doctrine_Table :: setColumn() establece el nombre de la columna en minúsculas, ya que no ve un alias allí. –

Respuesta

2

Parece que es un error. Lo digo porque YAML is case sensitive y Doctrine's generateYAMLFromModels()is documented to be case sensitive. Encontré un case sensitivity bug que estaba en 2.0 beta. Tal vez este es el error que afectó su programa. A menos que cualquier otra cosa, sin embargo, parece que Dimitris comentario Baltas parece ser la solución de la elección:

una otra alternativa es generar modelos de base de datos y luego Yaml a partir de modelos. Este mantiene la carcasa correcta.

caza feliz :)

Cuestiones relacionadas