创建一对多映射,其中许多可以是不同的对象类型

时间:2011-03-16 23:43:18

标签: php mysql orm doctrine doctrine-orm

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

我有三个表,一个 StockRequest,SalesOrder,WorkOrder StockRequest 包含 Type TypeNo 字段。 Type用于决定它是否与Sales Order或WorkOrder有关系,TypeNo是 SalesOrder / WorkOrder 的关键。

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

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

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

1 个答案:

答案 0 :(得分:0)

我会用继承和关系来做,例如:

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

的实例