2011-07-26 5 views
5

Sono nuovo in ORM e sono davvero entusiasta di apprenderlo. Sono riuscito a installare tutte le classi e le configurazioni per Doctrine 2.1 con Zend 1.11.x seguendo questo tutorial.Zend 1.11 e Doctrine 2 Auto generano tutto il necessario dal database esistente

http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/ Che utilizza il plug-in Bisna e gli script di dottrina.

Ora il mio problema è che sta chiaramente spiegando come creare entità e tabelle tramite classi Doctrine, ma non spiegano come generare automaticamente i proxy e le classi di pronti contro termine da base di dati già esistente, che mi aiuta a selezionare, inserire e aggiornare. Creo sempre i miei database usando MySQL Workbench.

Ho anche seguito il tutorial sotto così

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

mio database è così complessa con rapporto che scorre attraverso tutti i modi possibili. Se seguo i passaggi illustrati in questi tutorial, non completerò mai il mio progetto. Qualcuno può spiegare come iniziare a usare Doctrine dopo la configurazione. Considerando che ho già un database e le mie cartelle Model sono vuote. Ho la mia cartella come di seguito.

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 

Per favore aiutatemi!

Ho postato questo stesso post ieri e nessuno ha risposto al mio post. Per favore fatemi sapere se avete bisogno di ulteriori informazioni da parte mia.

Grazie,

Karthik

risposta

4

Secondo Dottrina si dovrebbe creare le entità prima te stesso e quindi creare lo schema del database da queste entità.

Ma poiché si dispone già di un database, probabilmente non lo si desidera. È possibile convertire il database in entità Doctrine2 in PHP, XML o Yaml.

Dovresti dare un'occhiata più da vicino agli strumenti a riga di comando che Doctrine offre con la colla Bisna perché lì puoi generare un sacco di cose.

per generare la vostra entità dal database considerare il seguente comando:

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

È anche possibile definire lo spazio dei nomi e una classe base che le entità devono estende con: --namespace = spazio dei nomi e --extends = classe.

Doctrine2 avverte di convertire il database in entità perché non tutto può essere rilevato o supportato automaticamente. Ad esempio, i tipi di dati ENUM non sono supportati per impostazione predefinita in Doctrine2, pertanto la conversione del database genererà un errore.

È una buona idea controllare tutte le entità in particolare le associazioni prima di utilizzarle. Spero che ti aiuti.

2

Se ho capito bene la tua domanda, avete i vostri entità già configurati e hanno bisogno di auto-generare il proxy e classi repository.

Entrambi possono essere creati utilizzando i seguenti comandi di Dottrina CLI dalla directory principale dell'applicazione:

php scripts/doctrine.php orm:generate-proxies 

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

Se siete alla ricerca di un modo per generare automaticamente le vostre classi di entità, purtroppo non credo che un la soluzione è ancora disponibile per questo.

Un rappresentante di supporto allo ORM Designer ha dichiarato di "lavorare su" questa funzione e che è "molto richiesta". Speriamo che venga incluso in ORM Designer 2.0 poiché in genere c'è un sacco di lavoro ripetitivo coinvolto nella codifica/mappatura delle classi di entità che potrebbero essere probabilmente automatizzate.

1

È possibile utilizzare il comando orm:generate-entities se si forniscono informazioni di mapping in formato XML o YAML.

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

Per lo sviluppo, impostare la generazione proxy per essere automatico nella configurazione, in caso contrario, utilizzare il comando orm:generate-proxies.

A meno che non sia necessario personalizzare i repository, quelli generici vengono creati nel gestore di entità quando richiesto. Per specificare i repository personalizzati, utilizzare semplicemente l'attributo di mappatura dell'entità repository-class.

Vedi http://www.doctrine-project.org/docs/orm/2.1/en/reference/xml-mapping.html#defining-an-entity per un esempio

Problemi correlati