Doctrine2 的 Class Table 继承的不完全专业化

Incomplete specialization with Doctrine2's Class Table Inheritance

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

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

问题: 除了上面列出的 "categorizable" 文件之外,总会有一些文件我不会为其提供更多元数据。因此,所有需要进入数据库的是 root/superclass table.

中的条目

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

A mapped superclass cannot be an entity [..]

有没有办法做到这一点?为什么不可能?

在这种情况下,我最终围绕 Doctrine 工作,因为我不仅要完成不完全专业化,还要完成多重继承。

多重继承:我希望一些文件既是audio_file又是video_file。

在 Doctrine 场景中,我想人们必须将每个可能的叶子组合指定为 class。正如我在评论中所述,即使是非特殊情况也需要 class 不同于根 class.

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