Doctrine - 无法使用组合键持久保存实体

时间:2017-06-07 04:46:24

标签: symfony doctrine-orm doctrine yaml composite-primary-key

我正在使用带有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

1 个答案:

答案 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