0

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

我不确定我做错了什么,它看起来很像我们在学说的映射文档中看到的所有内容。如果有人能指出我正确的方向,那就太好了。

4

1 回答 1

2

验证错误是正确的。

这并没有错:我们只是改进了 Doctrine 的运行时验证器,以便在加载元数据时也能捕获此类异常。

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

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

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

于 2013-02-15T22:29:50.067 回答