Symfony 2找不到映射实体的主键

时间:2013-04-18 11:44:15

标签: symfony doctrine-orm

我遇到的问题是映射实体的主键没有被学说检测到。

我有2个表,用户和运营商。用户和运营商之间存在单向的多对一关系。

用户实体定义为

XXX\SecurityBundle\Entity\User:
    type: entity
    repositoryClass: XXX\SecurityBundle\Repository\UserRepository
    table: XXX_USER
    id:
        id: 
            type: integer
            unsigned: false
            nullable: false
            column: ID
            generator:
                strategy: AUTO
    fields:
        username:
            type: string
            length: 32
            nullable: false
            column: USERNAME
...
    manyToOne:
        operator:
            targetEntity: XXX\CoreDataBundle\Entity\Operator
            joinColumn:
            name: operator_id
            referencedColumnName: id

运营商实体定义为

XXX\CoreDataBundle\Entity\Operator:
    type: entity
    respositoryClass: XXX\CoreDataBundle\Repository\OperatorRepository
    table: OPERATORS
    id:
        id:
            type: integer
            unsigned: false
            nullable: false
            column: ID
            generator:
                strategy: AUTO
    fields:
        operName:
            type: string
            length: 32
            nullable: false
            column: OPERATOR_NAME    

验证架构时,收到以下错误:

  • 引用的列名称“id”必须是目标实体类“XXX \ CoreDataBundle \ Entity \ Operator”上的主键列。

当我尝试将操作员分配给用户时,收到以下错误:

[ErrorException]
  注意:未定义索引:vendor / doctrine / orm / lib / Doctrine / ORM / Persisters / BasicEntityPersister.php行中的id   607

据我所知,'id'被设置为运营商实体的主键。 doctrine背后的数据库是oracle,in与实体定义同步,并且在数据库上正确设置了主键。

任何人都能在定义映射时发现错误吗?

我不认为实体在不同的捆绑包中的事实是一个问题,因为我在同一捆绑包中的实体遇到类似的问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

Oracle的列和表名总是大写的。因此,如果使用它们,您需要将referencedColumnName放在大写中,即使在PHP端它是小写的。