简体   繁体   中英

Symfony2 Import entities from existing database with Doctrine

I am a beginner with symfony. I have tried to follow the official documentation http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html to import a entities from MySQL to a symfony2 project in a Debian testing box. but I didn't succeeded.

Then searching here and there I have found this Generating a single Entity from existing database using symfony2 and doctrine here, but I cant make it work, my console: "ask Doctrine to introspect the database and generate the corresponding metadata files"

root@khs01wxl001:/var/www/organizer$ php app/console doctrine:mapping:import --force organizerscheduleBundle php
Importing mapping information from "default" entity manager
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Dept.orm.php
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Desg.orm.php
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Dir.orm.php
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Schedule.orm.php
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Username.orm.php
  > writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Userrole.orm.php
root@khs01wxl001:/var/www/organizer$

So far so good, but now "you can ask Doctrine to build related entity classes by executing the following two commands.

$ php app/console doctrine:mapping:convert annotation ./src
$ php app/console doctrine:generate:entities AcmeBlogBundle

but when I do it the first one doesn't work for me:

root@khs01wxl001:/var/www/organizer$ php app/console doctrine:mapping:convert annotation ./src/organizer/scheduleBundle/Resources/config/doctrine/
No Metadata Classes to process.
root@khs01wxl001:/var/www/organizer$

Any suggestion?

Try with:

# write the structure to annotation file (I prefear to use YML instead annotation but should be the same) 
$ php app/console doctrine:mapping:convert annotation ./src/organizer/scheduleBundle/Resources/config/doctrine/metadata/orm --from-database --force

# Import the structure
$ php app/console doctrine:mapping:import organizerscheduleBundle annotation

# Generate Entities file class
$ php app/console doctrine:generate:entities organizerscheduleBundle 

More docs here:

http://docs.doctrine-project.org/en/2.0.x/reference/tools.html#reverse-engineering

Not all will be imported (the doc says 70-80% but in my opinion is less).

PS. A best pratice is to call the bundle OrganizerScheduleBundle (look uppercase letters) with organizer as company name, so inside the developer/company name folder there will be all the bundles.

If you are using symfony 3 and wanna use the annotations, i used this:

php bin/console doctrine:mapping:import --force AcmeBlogBundle annotation

This generate all you need, without needing the doctrine:mapping:convert

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM