将可嵌入字段设置为父实体映射中的主键 - 原则2
2022-08-30 23:50:03
TLDR;Doctrine2:我需要知道是否有可能使嵌入中的字段从父实体(或MappedSuperclass')映射中转换为主键。我已经知道如何从嵌入式的映射中设置主键,但这并不理想(请参阅“长版本”)。
长版本;我正在尝试使用 Doctrine2 Embeddables 为我的实体创建身份值对象。
这是我的问题...
我在一个实体(MyEntity)中有两个不同的可嵌入对象(MyEntityId 和其他EntityId)。
我希望 MyEntityId 中的字段成为 MyEntity 的主键。
由于我在同一实体中有两个标识可嵌入对象,因此我想在实体映射文件中定义主键字段,而不是在可嵌入映射中定义主键字段。
如果我从可嵌入中定义主键,当我想对OtherEntityId执行相同的操作时,我会遇到问题(因为我在其他地方使用它)。
在 MyEntityId 和其他EntityId 中映射主键会导致 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'
解决 方案?
创建两个单独的可嵌入对象来表示相同的 Id 值对象(不是很干,也不太复杂)
从实体映射可嵌入对象的主键字段(这可能吗?我在文档中的任何地方都找不到它)