Dłu*_*ugi 7 php mysql doctrine symfony
我正在尝试从现有的空数据库生成symfony2中的实体(非常大,从头开始创建实体真的很痛苦).可悲的是,我遇到了相当大的问题.
当我尝试调用以下命令时(在Windows上,如果它改变任何东西):
php app/console doctrine:mapping:convert --force --from-database annotation ./src/GOutside/GOBundle/Resources/config/doctrine
Run Code Online (Sandbox Code Playgroud)
我得到以下消息:
没有要处理的元数据类.
在发布之前我已经:
Symfony版本是2.4.4,php版本是5.5.3.
在此先感谢您的帮助:)
在xiidea回复后编辑
当我尝试使用时
php app/console doctrine:mapping:import --force GOBundle xml
Run Code Online (Sandbox Code Playgroud)
正如@xiidea所建议的那样,我得到以下信息:
数据库没有任何映射信息.
Kak*_*shi 10
我收到了这个错误
Database does not have any mapping information.
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这是因为我有2个像这样命名的表:
当我尝试使用此命令时:
sudo php app/console doctrine:mapping:import --filter="MockstoreProduct" --force MockizartStoreBundle yml
Run Code Online (Sandbox Code Playgroud)
错误Database does not have any mapping information.出现了.但它没有,当我用它来生成--filter="MockstoreCategory".
因此要为mockstore_product表生成映射,它应该是:
php app/console doctrine:mapping:import --filter="Product" --force MockizartStoreBundle yml
Run Code Online (Sandbox Code Playgroud)
--filter="Product" 不 --filter="MockstoreProduct"
希望这有帮助.
您的案例在symfony网站上有详细记录,标题为"如何从现有数据库生成实体"
正如文件所述:
从现有数据库构建实体类的第一步是要求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),您可以在doctrine配置部分添加自定义映射.例如,要将点类型映射为字符串,您可以编写:
doctrine:
dbal:
//Other connection parameters
mapping_types:
point: string
Run Code Online (Sandbox Code Playgroud)
对于第二个问题,您需要为这些表定义主键,这些表可以是新字段,也可以是复合主键.