【问题标题】:Creating One-To-Many mapping where Many can be different object types创建一对多映射,其中许多可以是不同的对象类型
【发布时间】:2011-03-16 23:43:17
【问题描述】:

我正在探索改造现有数据库以使用 Doctrine 的可行性。

我有三个表,StockRequest、SalesOrder、WorkOrderStockRequest 具有字段 TypeTypeNo。 Type用于决定是否与SalesOrder或WorkOrder有关系,TypeNo是SalesOrder/WorkOrder的key。

维持这种关系的推荐方法是什么?

阅读教义文档,它提到了一个存储库类,我可以使用它来基于 Type 有条件地获取,只维护一个 StockRequest 实体。

另一种可能性是对 StockRequest 类进行子类化,以便我拥有 SalesOrderStockRequestsWorkOrderStockRequests

【问题讨论】:

  • 我也有同样的问题 - 你最近怎么样?
  • 我决定子类化。您可以将所有通用逻辑粘贴在抽象类中,只需覆盖不同的字段和方法。我认为这是要走的路,否则我们将不得不与实体管理器进行一些令人讨厌的耦合。

标签: php mysql orm doctrine doctrine-orm


【解决方案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 实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多