【问题标题】:Doctrine - Unable to persist entity with composite key教义 - 无法使用复合键持久化实体
【发布时间】:2017-06-07 04:46:24
【问题描述】:

我正在使用带有 YML 映射的 Doctrine。我有两个实体。一个Group 实体和一个User 实体。

我正在尝试进行设置,以便 Users 在组内具有唯一名称。

我可以创建一个User,为其分配一个Group,并将其保存到数据库中。但是,当我尝试创建具有相同名称和不同 GroupUser 时,我收到一条错误消息,指出违反了 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

【问题讨论】:

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


    【解决方案1】:

    我最终想通了。我把教义弄糊涂了。

    非标准的事情是我使用大写的参数名称来表示一个对象并将其更改为表列的小写。我在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2015-11-15
      • 2019-12-08
      相关资源
      最近更新 更多