我正在尝试从现有的空数据库中生成symfony2中的实体(相当大,从头开始创建实体确实很痛苦)。不幸的是,我遇到了很大的问题。
当我尝试调用以下命令时(在Windows上如果发生任何更改):
php app/console doctrine:mapping:convert --force --from-database annotation ./src/GOutside/GOBundle/Resources/config/doctrine
我收到以下消息:
没有要处理的元数据类。
发布之前,我已经:
Symfony版本是2.4.4,php版本是5.5.3。
预先感谢您的帮助:)
xiidea回复后编辑
当我尝试使用
php app/console doctrine:mapping:import --force GOBundle xml
根据@xiidea的建议,我收到以下消息:
数据库没有任何映射信息。
您的案例在symfony网站上有很好的记录,该网站的标题为 “如何从现有数据库生成实体”
如文档所述:
从现有数据库构建实体类的第一步是要求Doctrine对数据库进行内部检查并生成相应的元数据文件。元数据文件描述了要基于表字段生成的实体类。
使用以下命令(假设捆绑包的简称为 GOutsideGOBundle )
$ PHP应用程序/控制台学说:映射:导入–force GOutsideGOBundle xml
然后,您需要致电。
PHP应用程序/控制台学说:生成:实体GOutsideGOBundle
如果需要使用注释映射生成实体类,则必须先执行以下命令 doctrine:generate:entities
doctrine:generate:entities
PHP应用程序/控制台学说:映射:转换注释./ src
路径应仅为 ./src 而不是 ./src/GOutside/GOBundle/Resources/config/doctrine
如果您的配置中的所有内容都正确,那么Database does not have any mapping information.就不可能出现错误!我不确定这个错误。但是根据您的数据库表架构,存在一些问题,这些问题将阻止您创建映射信息。
Database does not have any mapping information.
要解决问题(1),您可以在主义配置部分中添加自定义映射。例如,将点类型映射为字符串,您可以编写:
doctrine: dbal: //Other connection parameters mapping_types: point: string
对于第二个问题,您需要为这些表定义主键,这些键可以是新字段,也可以是复合主键。