是否可以直接从数据库使用Doctrine 2生成模型类?

时间:2011-07-11 16:22:29

标签: php zend-framework doctrine models doctrine-orm

我正在Zend应用程序中从Doctrine 1.1.4升级到Doctrine 2.0.6。我已经安装了Doctrine 2命令行工具。

在Doctrine 1.1.4中,我直接从数据库生成模型类(使用Doctrine :: generateModelsFromDb()),这在Doctrine 2中是否可行,或者我是否必须通过'映射'过程,即提供Docblock注释,表格的XML或YAML结构。

我之所以这么说是因为Doctrine 2中有一个'setAutoGenerateProxyClass'选项,我觉得这意味着它会从头开始生成代理类。

感谢帮助。

2 个答案:

答案 0 :(得分:6)

自动生成代理类基本上意味着Doctrine 2将自动为您的实体生成“代理类”,而不是仅使用generate-proxies手动生成它们。当您在实体中存在关系并且需要延迟加载时,会使用代理。

要从数据库生成映射信息,可以使用convert-mapping:

php doctrine orm:convert-mapping --from-database yml /path/to/mapping-path-converted-to-yml

请记住,这仅建议用作起点。数据库驱动程序无法正确生成所有可能的选项组合的映射,因此您可能只需运行一次,然后自己编写映射。

请参阅Doctrine 2 manual, "Reverse Engineering the database"

答案 1 :(得分:3)

如果要获取生成的实体,可以使用“注释”作为驱动程序:

php doctrine orm:convert-mapping --from-database annotation generatedModels