我安装了zf2 DoctrineORMModule和DoctrienModule。我正在尝试使用命令工具创建映射文件并从这些映射文件生成实体。 (我知道这不是首选的方法,但这就是我要去做的方法。我有我的理由。)
我配置了一个restful模块,这是我对该模块的Doctrine配置。
// Doctrine config
'doctrine' => array(
'driver' => array(
'Restful_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/Restful/Entities')
),
'orm_default' => array(
'drivers' => array(
'Restful\Entities' => 'Restful_driver'
)
)
)
)
我先跑
doctrine orm:convert-mapping xml /to/my/dest/path --from-database --force
这将创建包含所有表信息的xml文件。这部分工作正常,我可以查看它创建的xml。接下来我尝试运行
doctrine orm:generate-entities /to/my/dest/path --generate-annotations
--generate-methods
我没有得到任何错误,但我也没有得到任何结果。上一个命令的输出是。
No Metadata Classes to process.
我试过阅读但没有发现任何真正解决我问题的文章。大多数人都说没有正确配置我的注释/映射。但我可以通过控制器转储实体管理器。
var_dump($this->getServiceLocator()->get('doctrine.entitymanager.orm_default'));
我需要做什么才能从xml映射生成实体?任何帮助表示赞赏。
答案 0 :(得分:5)
我在YAML文件中遇到了类似的问题,并发布了我的解决方案here。我确信这也适用于xml文件。只是尝试添加
$driverImpl = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array("YOUR_PATH_TO_XML_FILES"));
/* @var $em \Doctrine\ORM\EntityManager */
$em = $application->getServiceManager()->get('doctrine.entitymanager.orm_default');
$em->getConfiguration()->setMetadataDriverImpl($driverImpl);
到doctrine-module.php。
答案 1 :(得分:0)
您是否尝试过使用vendor / bin中的doctrine-module脚本?它应该已经全部设置为阅读你的应用程序的配置。
./doctrine-module orm:generate-entities ~/doctrine-entities
答案 2 :(得分:0)
发生此“错误”是因为您使用注释驱动程序进行生成。此驱动程序使用您当前存在的实体并且不查看xml。如果要从XML创建实体 - 您应该在doctrine配置部分XML驱动程序中使用需要路径发送给DI。
我使用另一个zf2 doctrine模块,而我的DI配置有另一种格式,所以我无法正确发送给你DI示例。