我正在使用带有YML映射的Doctrine。我有两个实体。一个Group
实体和一个User
实体。
我正在尝试设置它,以便User
在组中具有唯一的名称。
我可以创建User
,为其分配Group
,然后将其保存到数据库中。但是当我尝试使用相同的名称和不同的User
创建Group
时,我收到一条错误消息,指出name
上的唯一约束已被违反。
为什么我不能坚持User
?
他们的映射看起来像这样:
Entity\Group:
type: entity
table: groups
id:
id:
type: guid
nullable: false
id: true
generator:
strategy: AUTO
fields:
name:
type: text
nullable: true
Entity\User:
type: entity
table: users
id:
group:
associationKey: true
nullable: false
name:
type: string
manyToOne:
Group:
targetEntity: Entity\Group
joinColumn:
name: group
referencedColumnName: id
答案 0 :(得分:0)
我最终想出来了。我在混淆Doctrine。
非标准的事情是我使用大写参数名来表示一个对象,并将其更改为表列的小写。我使用manyToOne:
在name:
部分中执行了此操作。
文档并没有真正做到这一点,所以我不知道我仍然需要在id:
部分引用大写的属性名称,并在那里单独定义列名。
所以,我将User
映射更改为:
Entity\User:
type: entity
table: users
id:
Group:
column: group
associationKey: true
nullable: false
name:
type: string
manyToOne:
Group:
targetEntity: Entity\Group
joinColumn:
name: group
referencedColumnName: id