2011-07-26 20 views
5

Soy nuevo en ORM y estoy muy interesado en aprenderlo. Logré instalar todas las clases y configuraciones para Doctrine 2.1 con Zend 1.11.x siguiendo este tutorial.Zend 1.11 y Doctrine 2 Auto generar todo lo necesario a partir de la base de datos existente

http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/ Que usa el complemento Bisna y los scripts de doctrina.

Ahora mi problema es que está explicando claramente cómo crear entidades y tablas mediante clases de doctrina, pero no explica cómo generar automáticamente los proxies y las clases de repositorio de la base de datos existente que me ayuda a seleccionar, insertar y actualizar. Siempre creo mis bases de datos usando MySQL Workbench.

También he seguido el tutorial a continuación, así

http://www.zend.com/en/webinar/Framework/70170000000bSrG-webinar-zf-v-1-doctrine-v-2-20101214.flv

Mi base de datos es tan complejo con relación fluye a través de todas las formas posibles. Si sigo los pasos que se explican en estos tutoriales, nunca completaré mi proyecto. ¿Alguien puede explicar cómo comenzar a usar Doctrine después de la configuración? Teniendo en cuenta que ya tengo una base de datos y mis carpetas de modelos están vacías. Tengo mi estructura de carpeta como a continuación.

C:/zf/library/Doctrine 
    C:/zf/library/Symfony 
    C:/zf/library/ZC -- (my model which should contain the proxies and repo of Doctrine. At the moment it contains nothing.) 
    C:/zf/library/Zend 
C:/zf/scripts/doctrine.php 

Por favor ayuda!

He publicado esta misma publicación ayer y nadie ha respondido a mi publicación. Por favor, avíseme si necesita más información de mi parte.

Gracias,

Karthik

Respuesta

4

De acuerdo con la doctrina que debe crear sus entidades primero a sí mismo y luego crear el esquema de base de datos a partir de estas entidades.

Pero como ya tiene una base de datos, probablemente no la quiera. Es posible convertir su base de datos a entidades de Doctrine2 en PHP, XML o Yaml.

Deberías echar un vistazo más de cerca a las herramientas de línea de comandos que Doctrine ofrece con el pegamento Bisna porque allí puedes generar muchas cosas.

para generar sus entidades de la base de datos debe tener en cuenta el siguiente comando:

php doctrine.php orm:convert-mapping --from-database php ../library/Application/Entity 

También puede definir el espacio de nombres y una clase base que sus entidades tienen que extiende con: --namespace = espacio de nombres y --extends = clase

Doctrine2 le advierte que convierta su base de datos a entidades porque no todo se puede detectar automáticamente o admitir. Por ejemplo, los tipos de datos ENUM no son compatibles por defecto en Doctrine2, por lo que la conversión de su base de datos generará un error.

Es una buena idea consultar todas las entidades, especialmente las asociaciones antes de usarlas. Espero que te ayude

2

Si entiendo bien su pregunta, usted tiene sus entidades ya configurados y la necesidad de generar tu proxy y clases de repositorios.

Ambos se pueden crear utilizando los siguientes comandos de Doctrina CLI desde el directorio raíz de su aplicación:

php scripts/doctrine.php orm:generate-proxies 

php scripts/doctrine.php orm:generate-repositories library/ 

Si usted está buscando una manera de auto-generar sus clases de entidad, por desgracia, no creo que una la solución está disponible para esto todavía

Un representante de soporte en ORM Designer dijo que están "trabajando en" esta característica y que es "muy demandada". Aquí esperamos que se incluya en ORM Designer 2.0 ya que generalmente hay mucho trabajo repetitivo involucrado en las clases de entidad de codificación/mapeo que podrían automatizarse.

1

Puede usar el comando orm:generate-entities si proporciona información de mapeo en formato XML o YAML.

Ver http://www.doctrine-project.org/docs/orm/2.1/en/reference/tools.html#entity-generation

para el desarrollo, establecer generación de proxy a ser automática en su configuración, de lo contrario, utilice el comando orm:generate-proxies.

A menos que necesite personalizar sus repositorios, se crean genéricos en el administrador de entidades cuando se solicite. Para especificar repositorios personalizados, simplemente use el atributo de mapeo de entidad repository-class.

Ver http://www.doctrine-project.org/docs/orm/2.1/en/reference/xml-mapping.html#defining-an-entity para un ejemplo

Cuestiones relacionadas