4

我安装了 zf2 DoctrineORMModule 和 DoctrienModule。我正在尝试使用命令工具来创建映射文件并从这些映射文件中生成实体。(我知道这不是首选方法,但这就是我要这样做的方式。我有我的理由。)

我配置了一个安静的模块,这是我的这个模块的教义配置。

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

4

3 回答 3

5

我对 YAML 文件有类似的问题,并在此处发布了我的解决方案。我相信这也适用于 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);

到教义-module.php。

于 2013-02-09T11:31:47.090 回答
0

您是否尝试使用 vendor/bin 中的教义模块脚本?它应该已经全部设置为读取您的应用程序的配置。

./doctrine-module orm:generate-entities ~/doctrine-entities
于 2012-11-12T22:39:16.947 回答
0

发生此“错误”是因为您使用 Annotation Driver 进行生成。此驱动程序使用您当前存在的实体并且不查看 xml。如果您想从 XML 创建实体 - 您应该在需要路径的 XML 驱动程序的原则配置部分中发送给 DI。

我使用了另一个 zf2 学说模块,而我的 DI 配置有另一种格式,所以我无法正确地向您发送 DI 示例。

于 2013-01-23T12:11:15.403 回答