我遇到了一个映射实体的主键没有被学说检测到的问题。
我有 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]
注意:未定义的索引:id in vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line
607
据我所见,“id”被设置为运营商实体的主键。教义背后的数据库是oracle,与实体定义同步,并且在数据库上正确设置了主键。
任何人都能够发现我在定义映射时的错误?
我不认为实体位于不同捆绑包中的事实是一个问题,因为我在同一个捆绑包中遇到了类似的问题。
谢谢你。