Zend framework 生成现有数据库的映射信息使用原则2

Zend framework 生成现有数据库的映射信息使用原则2,zend-framework,doctrine-orm,Zend Framework,Doctrine Orm,我已经在Zend Framework 1.10上设置了条令2,并正确设置了所有自动加载,包括application.ini中所有必要的配置设置。我现在需要做的(或者我相信是这样)是使用映射信息创建实体类,以便实体管理器可以使用我的数据库 我不想手工编写实体类,因为这需要很长时间,但我似乎不知道下一步该怎么做。命令行工具是否具有从现有模式创建实体、代理和所有其他必要类的功能?您可以使用Doctrine的反向工程工具 但是它也不能像参考文献中提到的那样检测所有的东西 您最好的选择是反向工程,并使用命

我已经在Zend Framework 1.10上设置了条令2,并正确设置了所有自动加载,包括application.ini中所有必要的配置设置。我现在需要做的(或者我相信是这样)是使用映射信息创建实体类,以便实体管理器可以使用我的数据库


我不想手工编写实体类,因为这需要很长时间,但我似乎不知道下一步该怎么做。命令行工具是否具有从现有模式创建实体、代理和所有其他必要类的功能?

您可以使用Doctrine的反向工程工具

但是它也不能像参考文献中提到的那样检测所有的东西


您最好的选择是反向工程,并使用命令行工具手动填充其余部分。

 ./bin/doctrine orm:convert-mapping --from-database xml ./bin/tmp
这将生成xml映射。然后,确保在配置CLI工具时将驱动程序更改为
XmlDriver

$driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array(
    APPLICATION_PATH . '/../bin/tmp'             
));
$config->setMetadataDriverImpl($driver);
我的CLI配置使用Zend_应用程序,所以我通常会在引导过程中对此进行更改

现在就跑

./bin/doctrine orm:generate-entities ./bin/tmp

Xml元数据驱动程序是将
orm:generate entities
从Xml转换为实体所必需的。如果使用默认注释驱动程序,它会将注释驱动程序路径中的实体转换为我们不需要的实体

现在,我已成功为现有数据库生成yaml映射,它们被放置在应用程序路径“/data/yaml”中。现在,当我尝试使用orm:generate entities..\library\APPLICATION\Entity时,如果希望它从yaml映射生成实体类,它将失败,并显示消息“No metadata class to process”您是否能够找出“无元数据类”错误的原因?只要我不使用“newDefaultAnnotationDriver”和基于PHP的注释,我就能够使用YAML/XML生成映射。它快把我逼疯了!对于Zend 2(实际上只是另一种方式),您需要更新vendor/doctor/doctor module/bin/doctor-module.php文件,并在最后两行之前添加以下内容:
$driverImpl=new\doctor\ORM\Mapping\Driver\XmlDriver(数组('./bin/tmp')
/*@var$em\Doctrine\ORM\EntityManager*/
$em=$application->getServiceManager()->get('Doctrine.EntityManager.ORM_default')
$em->getConfiguration()->setMetadataDriverImpl($driverImpl)