如何从条令2中现有的数据库自动生成xml或yaml映射器。。。但不使用cli
我是ORM世界的新手,并将条令2与zf项目集成。我已经阅读了条令文档和各种文章,并将其整合为:) 我有一个现有的数据库,从中我可以生成我的映射器和实体。我愿意使用XML/YAML映射器而不是默认注释 我在任何地方都能看到CLI命令,通过在存在“doctor.php(在doctor官方文档中提供)”文件的bin目录中执行以下命令来生成映射器和实体 生成映射器:如何从条令2中现有的数据库自动生成xml或yaml映射器。。。但不使用cli,xml,zend-framework,doctrine-orm,auto-generate,mappers,Xml,Zend Framework,Doctrine Orm,Auto Generate,Mappers,我是ORM世界的新手,并将条令2与zf项目集成。我已经阅读了条令文档和各种文章,并将其整合为:) 我有一个现有的数据库,从中我可以生成我的映射器和实体。我愿意使用XML/YAML映射器而不是默认注释 我在任何地方都能看到CLI命令,通过在存在“doctor.php(在doctor官方文档中提供)”文件的bin目录中执行以下命令来生成映射器和实体 生成映射器: *php doctrine orm:convert-mapping --from-database xml /path
*php doctrine orm:convert-mapping --from-database xml /path/to/mappers*
生成实体/模型类:
*./doctrine orm:generate-entities /path/to/models/or/entities*
但是我不想执行命令并生成映射器/实体。我正在寻找一个PHP脚本,它可以为我实现这一点(通过调用控制器中的操作方法,例如:www.doctrineproj.com/admin/mdoels/autogenerate/)
我们是否有任何API类或任何方法通过php代码来实现这一点,而不是执行CLI脚本。
可能是打个电话
生成映射程序:doctrine_core::generateMappers(dbParams,mapperDriver)
生成实体:原则\u核心::生成实体(元数据)
或
是否有任何方法可以使用类似系统的调用从php脚本文件执行所有CLI命令
我尝试使用上述cli命令使用exec()和system()。但效果不好:(
下面是我用来从action方法生成映射器的代码
公共函数自动生成(){
}
但是上面的代码并不是在目标目录中创建映射程序
请建议我一个最佳的解决方案,使用自动php脚本从DB自动生成映射器和实体
期待一个最好的解决方案
谢谢
Raj尝试下一步(在控制器的某些方法中):
$result = array();
//change the current working DIR to bin
$cliPath = "cd ". APPLICATION_PATH . "/bin";
exec($cliPath,$result);
//construct the CMD to generate the XML files from the DB tables
$mapperDir = APPLICATION_PATH. "/models/entities/xml-mapper/";
$mapperType = "xml";
$generateMappersCmd = "php doctrine orm:convert-mapping --from-database " . $mapperType . ' ' . $mapperDir ;
//execute the CMD
$result = system($generateMappersCmd);
$kernel = $this->get('kernel');
$application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
$application->setAutoExit(false);
$options = array(
'command' => 'doctrine:generate:entity',
'--entity' => "SomeDemoBundle:YourEntityName",
'--fields' => "name:string(255) price:float description:text",
'--with-repository' => true,
'--format' => 'xml',
);
$fp = tmpfile();
$out = new StreamOutput($fp);
$in = new \Symfony\Component\Console\Input\ArrayInput($options);
$in->setInteractive(false);
$application->run($in, $out);