Doctrine2的类表继承不完整的专业化

时间:2015-01-10 21:30:17

标签: inheritance doctrine-orm

我想表示数据库中的文件并存储元数据,具体取决于它是音频文件,视频文件还是图像文件。

处理此问题的规范化方法是多个表,每个表只包含特定文件类型所需的列。 root / superclass表将保存所有文件的共同信息(路径,名称,大小,日期等)。

问题: 除了上面列出的“可分类”文件外,总会有文件我不会提供进一步的元数据。因此,所有需要进入数据库的是root / superclass表中的条目。

阅读Doctrine 2 Documentation on Class Table Inheritance (CTI)后,我相信Doctrine2不会允许没有进一步专业化的对象:

  

映射的超类不能是实体[..]

有没有办法实现这个目标?为什么不可能?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我最终解决了Doctrine问题,因为我不仅希望完成不完整的专业化,还希望实现多重继承。

多重继承:我想要一些文件,audio_file和video_file。

在Doctrine场景中,我想有人必须将每个可能的叶子组合指定为一个类。正如我的评论中所述,即使是非专业化的案例也需要是一个与根类不同的类。

所以,我正在做的是手工SQL查询和自己构建对象。基本上,在这种情况下接管部分ORM。这使我能够忠于原始数据库模式。