Come generare entità da tabella esistente in symfony2?

Ho la tabella “my_table” con alcuni campi.
Voglio generare Entità in MyBundle usato “my_table”. Ma non voglio ricreare tutti i soggetti MyBundle.
Come posso fare questo?

InformationsquelleAutor Alastor | 2012-11-15

 

4 Replies
  1. 16

    Qui è il modo in cui si può fare,

    Primo passo, chiedere Dottrina di analizzare il database e generare xml corrispondente o yml file di metadati.

    php app/console doctrine:mapping:convert [xml|yml] Path/To/MyBundle/Resources/config/doctrine/metadata/orm --from-database --force --filter=MyTable

    Secondo passo, chiedere Dottrina di importare lo schema e costruire le relative classi di entità, eseguendo i seguenti comandi.

    php app/console doctrine:mapping:import MyBundle [xml|yml|annotation] --filter=MyTable
    
    php app/console doctrine:generate:entities Path\To\MyBundle\EntityFolder\\MyTable

    Dare un’occhiata al Come generare Entità da un Database Esistente sezione della documentazione

    • Nel finale di comando, sono stato in grado di usare la scorciatoia MyBundle:MyTable in luogo di Path\To\MyBundle\EntityFolder\\MyTable
  2. 6

    Semplice Soluzione di Lavoro per Symfony 2.7 opzione di annotazione e per [/xml/yml] vedi http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

    fare 3 comandi in 3 passi:

    Comando #1:

    $ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting"

    Di uscita:

    scrittura C:\xampp\htdocs\localxyz\src\AppBundle/Resources/config/doctrine/Meeting.orm.xml


    Il comando #2:

    $ php app/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Meeting"

    Di uscita:

    Elaborazione entità “Incontro”

    Esportazione di “annotazione” informazioni di mappatura a “C:\xampp\htdocs\localxyz\src\Entity”


    Comando #3:

    $ php app/console doctrine:generate:entities AppBundle:Meeting --no-backup

    Di uscita:

    Generazione di entità “AppBundle\Entity\Meeting”
    la generazione di AppBundle\Entity\Meeting

    dove:

    AppBundle è esattamente il vostro “AppBundle” in 2.7 symfony
    La riunione è la tabella di destinazione (maiuscole e minuscole)

    PER ESSERE SICURI, controllare questa directory:

    C:\xampp\htdocs\myproj\src\AppBundle/Resources/config/doctrine/Meeting.orm.xml

    C:\xampp\htdocs\myproj\src\AppBundle/Resources/config/doctrine/MeetingOriginal.orm.xml

    E FARE in modo che solo .i file xml per la tabella che si desidera creare entità file di classe e non con altri.

    Funziona molto bene per me.

    Per la spiegazione, si prega di leggere: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

    • Questo funziona per un gestore di entità default.Se si dispone di estrarre i dati da un database diverso quindi fornire il seguente param –em=”ENTITÀ MANGIATOIA NOME”
  3. 1

    Anche se questo è un vecchio post, ma se qualcuno ottiene il seguente errore,

    Database does not have any mapping information.

    Controllare

    Se il nome della tabella è blog_post quindi in opzione di filtro di utilizzare BlogPost e non blog_post

    Di riferimento: https://stackoverflow.com/a/27019561/6504104

    se questo è coperto da risposte di cui sopra, ma ho perso ed è stato sempre questo errore

    Così ho voluto fare questo esplicito

    Grazie…

Lascia un commento