2011-07-11 58 views
6

我正在从Zend应用程序中从Doctrine 1.1.4升级到Doctrine 2.0.6。我已经安装了Doctrine 2命令行工具。在Doctrine 1.1.4中,我直接从数据库(使用Doctrine :: generateModelsFromDb())生成模型类,在Doctrine 2中这是可能的,还是必须通过“映射”过程,即通过提供表格的Docblock Annotations,XML或YAML结构。是否可以直接从数据库中使用Doctrine 2生成模型类?

我问这个问题的原因是因为在Doctrine 2中有一个'setAutoGenerateProxyClass'选项,我感觉这意味着它会从头开始生成代理类。

欣赏帮助。

回答

6

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

为了从数据库映射信息,您可以使用转换映射:

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

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

Doctrine 2 manual, "Reverse Engineering the database"

3

您可以使用“标注”为驱动,如果你想获得生成的实体:

php doctrine orm:convert-mapping --from-database annotation generatedModels 
相关问题