升级到Symfony 2.2 RC2会导致映射错误

时间:2013-02-15 18:32:44

标签: php symfony orm doctrine-orm symfony-2.2

我刚刚将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.*",
[...]

我不确定我做错了什么,看起来就像我们在教条的地图文档中看到的一切。如果有人能指出我正确的方向,那就太好了。

1 个答案:

答案 0 :(得分:2)

验证错误是正确的。

这没有错:我们刚刚改进了Doctrine的运行时验证程序,以便在加载元数据时捕获此类异常。

以下是您的YAML实际应如何更改:

MyBundle\Entity\Usuario:
    [...]
    oneToMany:
        historicos:
            targetEntity: Historico
            mappedBy: coUsuario
    [...]

我基本上修复了oneToMany关联mappedBy属性以指向正确的字段。