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

Symfony 2未找到映射实体的主键,symfony,doctrine-orm,Symfony,Doctrine Orm,我遇到了映射实体的主键未被条令检测到的问题 我有2个表、用户和运算符。用户和操作员之间存在单向多对一关系 用户实体定义为 XXX\SecurityBundle\Entity\User: type: entity repositoryClass: XXX\SecurityBundle\Repository\UserRepository table: XXX_USER id: id: type: integer

我遇到了映射实体的主键未被条令检测到的问题

我有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    
运算符实体定义为

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”上的主键列
当我尝试将操作员分配给用户时,我收到以下错误:

[错误例外]
注意:未定义的索引:vendor/doctrine/orm/lib/doctrine/orm/Persisters/basicintypersister.php行中的id
607

据我所见,“id”被设置为操作员实体的主键。条令背后的数据库是oracle,与实体定义同步,并且数据库上的主键设置正确

有人能发现我在定义映射时的错误吗

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


谢谢。

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

在多对一关系中,
referencedColumnName
不能是主键以外的键,据我所知,没有关于它的文档。我也遇到了同样的问题,继续只在引用列名中使用主键。在这种情况下(据我所知),referencedColumnName是运算符实体的主键,它找不到它。我想我可能是错误地理解了您的问题。但我有另一个想法,oracle是区分大小写的,我不确定doctrine对列名做了什么,但您能否尝试在这两个实体中设置列名
id
,而不是
id
?这只是一个想法,因为条令将引用的列名生成为默认值,ID和ID可能不同,这听起来很傻,我知道,但正如我所说的,这只是一个想法……谢谢,是区分大小写造成了问题。Oracle不区分大小写(但按惯例使用大写),但引用的列名的匹配区分大小写。如果我将引用的列名更改为“ID”,它将进行验证。真高兴,向上一个箭头;)