我刚刚将Symfony的项目版本从2.1升级到2.2 RC2,并开始看到2.1中没有出现的一些映射错误。我的整个映射似乎都会抛出错误。有一个例子:
这是我的两个实体。
1
MyBundle\Entity\Usuario:
type: entity
table: usuario
id:
id:
type: integer
generator: { strategy: AUTO }
column: co_usuario
fields:
[...]
oneToMany:
historicos:
targetEntity: Historico
mappedBy: id
[...]
2
MyBundle\Entity\Historico:
type: entity
table: historico
id:
id:
type: integer
generator: { strategy: AUTO }
column: co_historico
fields:
[...]
manyToOne:
coUsuario:
targetEntity: Usuario
inversedBy: historicos
joinColumn:
name: co_usuario
referencedColumnName: co_usuario
[...]
这些是我得到的错误:
关联MyBundle \ Entity \ Usuario#historicos指的是 拥有侧面字段MyBundle \ Entity \ Historico #id,未定义为 协会。
关联MyBundle \ Entity \ Usuario#historicos引用 到拥有方字段MyBundle \ Entity \ Historico #id中没有 存在。
我以前的composer.json(从版本2.1开始,一切正常)都有这些版本的学说:
[...]
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
[...]
Symfony 2.2 RC2附带了这些版本的Doctrine:
[...]
"doctrine/orm": "~2.2,>=2.2.3",
"doctrine/doctrine-bundle": "1.2.*",
[...]
我不确定我做错了什么,看起来就像我们在教条的地图文档中看到的一切。如果有人能指出我正确的方向,那就太好了。
答案 0 :(得分:2)
验证错误是正确的。
这没有错:我们刚刚改进了Doctrine的运行时验证程序,以便在加载元数据时捕获此类异常。
以下是您的YAML实际应如何更改:
MyBundle\Entity\Usuario:
[...]
oneToMany:
historicos:
targetEntity: Historico
mappedBy: coUsuario
[...]
我基本上修复了oneToMany
关联mappedBy
属性以指向正确的字段。