【发布时间】:2017-06-23 05:43:04
【问题描述】:
我有一个给定的数据库,它将通过自动导入不断填充。所以我无法更改数据库结构,必须围绕数据库构建 Doctrine 模型。因此,我为此生成了一个模型,并且大多数东西在我的源代码中都可以正常工作,但对于下表而言尤其如此。
Table Device
----------
deviceId (pk)
name
deviceType (fk to DeviceType)
...
Table Processor
-----------
deviceId (pk)
ProcessorName
Clockspeed
...
Table RAM
-----------
deviceId (pk)
Size
Manufacturer
...
Table DeviceType
------------
deviceTypeId(pk)
DeviceType
...
Doctrine 正在生成一对一的映射,例如,在设备和 RAM 表之间,我认为有什么问题。 问题是,这些表共享主键(DeviceId)。因此,如果设备表中有 ID 为 1 的设备,如果 deviceType 为“RAM”(在 deviceType 表中定义),则 RAM 表中也有一个数据集。例如,ID 2 是一个处理器,因此在设备和处理器中都有一个条目,两者的 ID 都为 2。依此类推……设备表中的数据集条目总是有一个 deviceType,在 deviceType 表中定义。
我不是数据库专家,但这实际上不是一种关系,而不是一对一的映射吗?如何将设备的子类型(RAM、处理器)映射到 Doctrine 中的父表?
谷歌搜索后,我认为我正在搜索单表继承,但我不知道 Doctrine 是否可以正确处理我的数据库模型,因为子类型(RAM,处理器......)唯一共享的东西父类(设备)是 id 字段。每个表的所有其他字段都完全不同。
非常重要的是,Doctrine 不会触及我的数据库结构,因为导入将不再起作用。
有什么想法吗?
谢谢。
【问题讨论】:
标签: php mysql symfony doctrine-orm doctrine