我遇到的问题是映射实体的主键没有被学说检测到。
我有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
验证架构时,收到以下错误:
当我尝试将操作员分配给用户时,收到以下错误:
[ErrorException]
注意:未定义索引:vendor / doctrine / orm / lib / Doctrine / ORM / Persisters / BasicEntityPersister.php行中的id
607
据我所知,'id'被设置为运营商实体的主键。 doctrine背后的数据库是oracle,in与实体定义同步,并且在数据库上正确设置了主键。
任何人都能在定义映射时发现错误吗?
我不认为实体在不同的捆绑包中的事实是一个问题,因为我在同一捆绑包中的实体遇到类似的问题。
谢谢。
答案 0 :(得分:0)
Oracle的列和表名总是大写的。因此,如果使用它们,您需要将referencedColumnName放在大写中,即使在PHP端它是小写的。