无法从映射文件生成zf2 DoctrineORMModule实体

时间:2012-11-12 14:46:26

标签: php doctrine-orm zend-framework2

我安装了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映射生成实体?任何帮助表示赞赏。

3 个答案:

答案 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示例。