我正在努力为以下类别(如场景)选择正确的映射:
The food entity has a composed primary key made of 3 fields plus a name field:
╔════════╦═══════╦════════╦════════════════╗
║ family ║ class ║ sector ║ name ║ - family INT UNSIGNED NOT NULL
╠════════╬═══════╬════════╬════════════════╣ - class INT UNSIGNED DEFAULT NULL
║ 1 ║ NULL ║ NULL ║ Natural ║ - sector INT UNSIGNED DEFAULT NULL
║ 1 ║ 2 ║ NULL ║ Greens ║ - name VARCHAR(200) NOT NULL
║ 1 ║ 2 ║ 1 ║ Spring veggies ║ - PRIMARY KEY (family, class, sector)
║ 1 ║ 2 ║ 2 ║ Spring fruits ║
║ 1 ║ 2 ║ 3 ║ Summer veggies ║
╚════════╩═══════╩════════╩════════════════╝
这张表是关于食物类别的。它们只能是一个匹配family
++的class
条目sector
。填充的主键字段越多,类别记录就越“具体”。具有family
+ class
+的记录sector
(即实际的扇区类别)将具有 2 个隐式父项:a/ A类记录,具有相同family
但class
设置sector
为 NULL,b/家庭记录,最高类别,具有相同的家庭值但两者都class
设置sector
为NULL。
一个部门记录将有 0 个孩子,但有 2 个父母意味着$spring_fruit_object->getParents()
将返回一组食品实体,例如[natural_hydrated_object, greens_hydrated_object]
(急切地)。
实际上,我担心根据上面列出的规则,现有的关联映射都不能自动处理这个用例。我可能必须从存储库类构建自定义查询。
您将如何处理这种情况?谢谢你。