【发布时间】:2015-04-03 18:35:47
【问题描述】:
我有一个非常简单的数据库,我正在尝试导入并从中创建实体。 Doctrine (Symfony) 能够从数据库中生成 YML 映射文件。但是当我随后尝试生成实体时,出现以下错误:
[Doctrine\Common\Persistence\Mapping\MappingException]
Invalid mapping file 'SandboxBundle.Entity.Product.orm.yml' for class
'SandboxBundle\Entity\Product'.
yml 文件对我来说看起来不错,正如我们所期望的那样,它是由 Doctrine 生成的。可以肯定的是,我对照一个在线 yml 验证器对其进行了检查,该验证器说没问题。我用来尝试生成实体的命令是:
app/console generate:doctrine:entities sandbox
.yml 文件紧随其后。请原谅由于在此处粘贴文件而导致的任何 yml 间距错误。正如我所说的,yml 文件是由学说生成的,并且确实通过了在线验证。
Product:
type: entity
table: product
indexes:
category_id:
columns:
- category_id
id:
id:
type: integer
nullable: false
unsigned: false
comment: ''
id: true
generator:
strategy: IDENTITY
fields:
productname:
type: string
nullable: true
length: 10
fixed: false
comment: ''
categoryId:
type: integer
nullable: true
unsigned: false
comment: ''
column: category_id
lifecycleCallbacks: { }
为了完整起见,这里是类别 yml 文件。错误出现在 Product 上,但我认为是因为先处理了 Product。
Category:
type: entity
table: category
id:
id:
type: integer
nullable: false
unsigned: false
comment: ''
id: true
generator:
strategy: IDENTITY
fields:
categoryname:
type: string
nullable: true
length: 50
fixed: false
comment: ''
lifecycleCallbacks: { }
我在网上搜索了与诊断映射异常有关的任何资源,但没有找到任何资源。我认为 YML 文件中有一些东西导致实体生成器阻塞。但是错误消息没有说明可能是什么。我看到 Stack Overflow 上有很多此类问题的实例。获得有关如何诊断这些类型的错误的信息,这样我们就可以自己解决问题了。
【问题讨论】:
-
唐,这不是一个解决方案,但您可以选择使用“详细”选项运行“生成实体”命令。这将为您提供 PHP 堆栈转储,然后您可以开始深入研究 Doctrine 代码,至少看看有什么问题。但是,我建议,如果您要开始在供应商代码中四处寻找,添加诊断“print_”语句等,请在您专门为此目的创建的 Symfony 测试实例。这就是我所做的。
标签: php symfony doctrine-orm mappingexception