我想表示数据库中的文件并存储元数据,具体取决于它是音频文件,视频文件还是图像文件。
处理此问题的规范化方法是多个表,每个表只包含特定文件类型所需的列。 root / superclass表将保存所有文件的共同信息(路径,名称,大小,日期等)。
问题: 除了上面列出的“可分类”文件外,总会有文件我不会提供进一步的元数据。因此,所有需要进入数据库的是root / superclass表中的条目。
阅读Doctrine 2 Documentation on Class Table Inheritance (CTI)后,我相信Doctrine2不会允许没有进一步专业化的对象:
映射的超类不能是实体[..]
有没有办法实现这个目标?为什么不可能?
答案 0 :(得分:0)
在这种情况下,我最终解决了Doctrine问题,因为我不仅希望完成不完整的专业化,还希望实现多重继承。
多重继承:我想要一些文件,audio_file和video_file。
在Doctrine场景中,我想有人必须将每个可能的叶子组合指定为一个类。正如我的评论中所述,即使是非专业化的案例也需要是一个与根类不同的类。
所以,我正在做的是手工SQL查询和自己构建对象。基本上,在这种情况下接管部分ORM。这使我能够忠于原始数据库模式。