小编Ben*_*Ben的帖子

将可嵌入字段设置为父实体映射的主键 - Doctrine2

TLDR; Doctrine2:我需要知道是否可以在Parent Entities(或MappedSuperclass')映射中将Embeddable中的字段设置为主键.我已经知道如何从Embeddable的映射中设置主键,但这并不理想(参见"长版本").

长版; 我正在尝试使用Doctrine2 Embeddables为我的实体创建身份值对象.

这是我的问题......

  • 我在实体(MyEntity)中有两个不同的Embeddables(MyEntityId和OtherEntityId).

  • 我希望MyEntityId中的一个字段成为MyEntity的主键.

  • 由于我在同一实体中有两个标识嵌入,我想在实体映射文件中定义主键字段而不是可嵌入映射.

  • 如果我在嵌入式中定义主键,那么当我想对OtherEntityId执行相同操作时遇到问题(因为我在其他地方使用它).

  • 映射MyEntityId和OtherEntityId中的主键导致MyEntity具有复合键,这是我不想要的.

这是我目前的映射......

MyEntity:
    embedded:
        MyEntityId:
            class: 'MyEntityId'
            columnPrefix: false
        OtherEntityId:
            class: 'OtherEntityId'
            columnPrefix: false

MyEntityId:
    type: 'embeddable'
        id: 
            id:
                column: 'MyEntityId'
                type: 'string'

OtherEntityId:
    type: 'embeddable'
        id: 
            id:
                column: 'OtherEntityId'
                type: 'string'
Run Code Online (Sandbox Code Playgroud)

解决方案?

  • 创建两个单独的Embeddables来表示相同的Id值对象(不是非常干燥和太复杂)

  • 从实体映射Embeddable的主键字段(这可能吗?我在文档中找不到它)

php embeddable doctrine-orm

9
推荐指数
1
解决办法
1367
查看次数

标签 统计

doctrine-orm ×1

embeddable ×1

php ×1