10

我有一些字段的表“my_table”。我想在 MyBundle 中使用“my_table”生成实体。但我不想重新创建 MyBundle 中的所有实体。我怎样才能做到这一点?

4

4 回答 4

16

这是你可以做到的方法,

第一步,让Doctrine自省数据库,生成对应的xml或yml元数据文件。

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

第二步,让Doctrine通过执行以下两条命令导入schema并构建相关实体类。

php app/console doctrine:mapping:import MyBundle [xml|yml|annotation] --filter=MyTable

php app/console doctrine:generate:entities Path\To\MyBundle\EntityFolder\\MyTable

查看文档的How to generate Entities from an Existing Database部分

于 2012-11-15T09:49:53.997 回答
6

Symfony 2.7 选项注释和 [/xml/yml] 的简单工作解决方案参见http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

分 3 步执行 3 个命令:

命令#1:

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

输出:

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


命令#2:

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

输出:

处理实体“会议”

将“注释”映射信息导出到“C:\xampp\htdocs\localxyz\src\Entity”


命令#3:

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

输出:

生成实体“AppBundle\Entity\Meeting”生成 AppBundle\Entity\Meeting

在哪里:

AppBundle 正是你在 2.7 symfony 中的“AppBundle” 会议是目标表(区分大小写)

可以肯定的是,检查这个目录:

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

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

并确保您只有要创建实体类文件的表的 .xml 文件,而没有其他文件。

它对我来说效果很好。

有关解释,请阅读:http ://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

于 2015-08-14T15:50:47.620 回答
2
php app/console doctrine:mapping:import "MyCustomBundle" xml --filter=MyMatchedEntity
于 2012-11-15T09:52:21.233 回答
1

虽然这是一个旧帖子,但如果有人收到以下错误,

Database does not have any mapping information.

查看

如果您的表名blog_post在过滤器选项中使用BlogPost而不是blog_post

参考:https ://stackoverflow.com/a/27019561/6504104

虽然上面的答案涵盖了这一点,但我错过了它并且收到了这个错误

所以我想明确这一点

同样在 symfony >= 3.4 中,php bin/console例如

php bin/console doctrine:mapping:import --force AppBundle xml --filter="BlogPost"

接着

php bin/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="BlogPost"

谢谢...

于 2017-12-05T14:48:26.290 回答