2011-07-28 15 views
9

Tengo un diseño de base de datos complejo con vistas, relación, etc. Decidimos cambiar a ORM desde el estándar Zend_db. He integrado con éxito zend 1.11 y la doctrina 2.1. Todos los tutoriales explican cómo crear la base de datos completa a través de clases escritas a mano. Pero, ¿qué pasa con la base de datos existente con datos? Yo de nuevo buscado y encontrado que llegué a usar el siguiente comandoDoctrine 2 y Zend 1.11 error de correlación de conversión ...

php orm:convert-mapping --from-database php path/where/you/want/to/store/mapping/classes 

Cuando lo hago por una base de datos sencilla con sólo 3 mesas y sin ningún tipo de relación, el comando anterior funciona de maravilla.

Pero cuando traté de usar el mismo comando en mi base de datos se emite una excepción diciendo

[Doctrine\ORM\Mapping\MappingException] 

Property "employeeid" in "Organization_has_employees" was already declared, but it must be 
declared only once 

he cambiado toda mi nombre de campo de manera que no hay nombres repetidos en cualquiera de la mesa, pero sigue sin suerte .

Por favor, ayúdenme con esto. Me estoy rompiendo la cabeza por más de 3 días.

Karthik

Respuesta

12

Después de horas de experimento que descubrió el problema. Obviamente no está en Doctrine, es la base de datos que diseñé. Cuando se hacen tablas de Muchos a Muchos en MySQL Workbenck, se le obliga a hacer una Relación de Identificación, que crea otra tabla y crea claves compuestas de las tablas principales. Asegúrese de nombrar estas claves principales de manera diferente o, si es posible, eliminar las claves compuestas y tenerlas como una relación no identificable. Agregue otra columna llamada id y tenga este campo como clave principal y numeración automática

La herramienta Doctrine también tiene un problema de caché, así que asegúrese de cambiar el nombre de la base de datos cada vez que realice un cambio y cámbiela en su zend config .

Espero que esto ayude a alguien por ahí. Si aún tiene problemas, publique aquí sus preguntas. Lo podré responder.

+1

Tengo el mismo problema (error), con doctrine: schema: create. La base de datos está vacía. Doctrine está lanzando: La "organización" de propiedades en "myApp \ PersonBundle \ Entity \ Contact" ya fue declarada, pero debe declararse solo una vez – FMaz008

+0

@ FMaz008 Ya es un poco ... Has intentado cambiar los nombres de los campos por algo único ? – Karthik

+0

Hola @Karthik. Tengo el mismo problema. No sé exactamente qué necesito eliminar o editar. ¿Puedo darte mi *? ¿Archivo MWB? Gracias de antemano .. – Puzo

Cuestiones relacionadas