【问题标题】:Cannot generate zf2 DoctrineORMModule entities from mapping files无法从映射文件生成 zf2 DoctrineORMModule 实体
【发布时间】:2013-02-09 19:31:47
【问题描述】:

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

【问题讨论】:

  • 您能告诉我们您的理由吗?我很想知道。
  • 因为我有一个巨大的数据库模式,我正在转换它,我不想回去手动创建所有这些。生成实体后,我可以通过并修改它们以更好地满足项目需求。 Plus Doctrine 甚至说使用该工具来完成 70% - 80% 的工作。我并不是想通过发表该评论来粗鲁。当我已经知道时,我只是不想有人告诉我这不是这样做的首选方法。我试图将问题保留在使用 DoctrineORMModule 工具的主题上,而不是我的原因。
  • 好吧,我理解你。谢谢你的解释:)

标签: php doctrine-orm zend-framework2


【解决方案1】:

我在使用 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);

到教义模块.php。

【讨论】:

  • 这个解决方案对我有用 - 我正在使用注释(所以 AnnotationDriver)而且我正在使用 Silex,所以我没有使用任何 $config 变量。我正在使用$app['orm.em']->getConfiguration()->setMetadataDriverImpl($driverImpl); - 现在我的实体获取器/设置器生成完美。谢谢 ACNB。
【解决方案2】:

您是否尝试过使用 vendor/bin 中的学说模块脚本?它应该已经设置好读取您的应用程序的配置。

./doctrine-module orm:generate-entities ~/doctrine-entities

【讨论】:

  • 是的,这就是我正在使用的,抱歉不清楚。我在本地有学说模块别名为学说。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    相关资源
    最近更新 更多