我试图从现有的空数据库中生成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的建议,我收到了以下信息:
数据库没有任何映射信息。
答案 0 :(得分:9)
您的案例在symfony网站上有详细记载,标题为 "How to generate Entities from an Existing Database"
正如文件所述:
从现有构建实体类的第一步 数据库是要求Doctrine内省数据库并生成 相应的元数据文件。元数据文件描述实体 要根据表字段生成的类。
使用以下命令(假设您的软件包的短名称为 GOutsideGOBundle )
$ php app / console doctrine:mapping:import --force GOutsideGOBundle xml
然后你需要打电话。
php app / console doctrine:generate:entities GOutsideGOBundle
如果需要生成带注释映射的实体类,则必须在doctrine:generate:entities
之前执行以下命令
php app / console doctrine:mapping:convert annotation ./src
路径应该只是 ./ src 而不是 ./ src / GOutside / GOBundle / Resources / config / doctrine
如果您的配置中的所有内容都正确,则不太可能出现错误Database does not have any mapping information.
!我不确定这个错误。但是根据您的数据库表模式,有一些问题会阻止您创建映射信息。
要解决问题(1),您可以在教条配置部分添加custom mapping。例如,要将点类型映射为字符串,您可以编写:
doctrine:
dbal:
//Other connection parameters
mapping_types:
point: string
对于您需要为这些表定义主键的第二个问题,这些可能是新字段,也可能是复合主键。
答案 1 :(得分:9)
我收到了这个错误
Database does not have any mapping information.
在我的情况下,因为我有两个名为这样的表:
当我尝试使用此命令时:
sudo php app/console doctrine:mapping:import --filter="MockstoreProduct" --force MockizartStoreBundle yml
出现错误Database does not have any mapping information.
。但是,当我用它来生成--filter="MockstoreCategory"
时,它没有。
因此要生成mockstore_product
表的映射,它应该是:
php app/console doctrine:mapping:import --filter="Product" --force MockizartStoreBundle yml
--filter="Product"
不 --filter="MockstoreProduct"
希望得到这个帮助。
答案 2 :(得分:8)
遇到同样的问题,原来是缓存:
console c:c
解决了这个问题。
答案 3 :(得分:0)
就我而言,问题在于对数据库表的访问权限。 用户凭据正确,但该用户无权读取表。 你可以执行这样的事情来检查 php bin/console 准则:query:sql "SELECT * FROM YOURTABLE"