Doctrine 2.2 ORM:从数据库进行逆向工程后抛出 MappingException

Posted

技术标签:

【中文标题】Doctrine 2.2 ORM:从数据库进行逆向工程后抛出 MappingException【英文标题】:Doctrine 2.2 ORM: After reverse-engineering from database MappingException is thrown 【发布时间】:2013-02-04 16:43:28 【问题描述】:

我正在使用 Zend Framework 样板,没有虚拟机。

我的 Application.ini,如下所示:

;resources.doctrine.orm.entityManagers.default.metadataDrivers.annotationRegistry.annotationFiles[]     = APPLICATION_PATH "/../library/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.adapterClass          = "Doctrine\ORM\Mapping\Driver\XmlDriver"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.mappingNamespace      = "Square\Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.mappingDirs[]         = APPLICATION_PATH "\..\library\Square\Entity"
;resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.annotationReaderClass = "Doctrine\Common\Annotations\AnnotationReader"
;resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.annotationReaderCache = default
;resources.doctrine.orm.entityManagers.default.metadataDrivers.drivers.0.annotationReaderNamespaces.Square = "Square\Entity"

我已经在 CLI 中运行了该命令,就像这里的示例一样:

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html#reverse-engineering

更具体地说是这个:

$ php doctrine orm:convert-mapping --from-database xml /path/to/mapping-path-converted-to-xml

这使用以下命名架构生成了我的 xml 文件:Entity.dcm.xml

我已经根据这些 XML 文件生成了我的实体类,然后尝试使用以下命令保存到数据库中:

    try
        $this->_em->persist($this->_apikey);
        $this->_em->flush();
    catch (Exception $e)
        echo "Something went bad --> ".$e;
    

$this->_apikey = new Square\Entity\Apikeys(); 在构造方法中的位置。

实体管理器抛出异常:

exception 'Doctrine\ORM\Mapping\MappingException' with message 'No mapping file found'

如果实体类是在它们上生成的,为什么 Doctrine 要求映射文件?

我是不是做错了什么?

【问题讨论】:

你的实体名为 APIkeys.php 吗? @mpm:是的!我的实体名为 APIkeys doctrine 命令是否使用与您的应用程序相同的引导过程? 【参考方案1】:

Doctrine 2.2 要求您保留 xml 文件,即使它的 PHP 类从它们进行逆向工程。

【讨论】:

以上是关于Doctrine 2.2 ORM:从数据库进行逆向工程后抛出 MappingException的主要内容,如果未能解决你的问题,请参考以下文章

从 orm.xml Doctrine 生成 php 实体

Symfony 4 Doctrine逆向工程问题

Doctrine异常 - [Doctrine ORM Mapping MappingException]

Zend2 框架 - 给映射异常的 Doctrine ORM

[Doctrine Migrations] 数据库迁移组件的深入解析四:集成diff方式迁移组件

Doctrine Abstract - 具体类 ORM