创建一对多映射,其中许多可以是不同的对象类型
Posted
技术标签:
【中文标题】创建一对多映射,其中许多可以是不同的对象类型【英文标题】:Creating One-To-Many mapping where Many can be different object types 【发布时间】:2011-03-16 23:43:17 【问题描述】:我正在探索改造现有数据库以使用 Doctrine 的可行性。
我有三个表,StockRequest、SalesOrder、WorkOrder。 StockRequest 具有字段 Type 和 TypeNo。 Type用于决定是否与SalesOrder或WorkOrder有关系,TypeNo是SalesOrder/WorkOrder的key。
维持这种关系的推荐方法是什么?
阅读教义文档,它提到了一个存储库类,我可以使用它来基于 Type 有条件地获取,只维护一个 StockRequest 实体。
另一种可能性是对 StockRequest 类进行子类化,以便我拥有 SalesOrderStockRequests 和 WorkOrderStockRequests。
【问题讨论】:
我也有同样的问题 - 你最近怎么样? 我决定子类化。您可以将所有通用逻辑粘贴在抽象类中,只需覆盖不同的字段和方法。我认为这是要走的路,否则我们将不得不与实体管理器进行一些令人讨厌的耦合。 【参考方案1】:我会用继承和关系来实现,例如:
abstract class AbstractOrder
common fields
class SalesOrder extends AbstractOrder
class WorkOrder extends AbstractOrder
然后
class StockRequest
relationship pointing to AbstractOrder
当你 getOrder() return $this->order; Doctrine 可以返回 SalesOrder 或 WorkOrder 的 u 实例
【讨论】:
以上是关于创建一对多映射,其中许多可以是不同的对象类型的主要内容,如果未能解决你的问题,请参考以下文章
mybatis xml数据层框架应用--Mybatis关系映射之一对多关系映射