我有一个实体内容,与FileImage或FileVideo有关。在Doctrine 2中执行此操作的正确方式是什么?
内容应该与FileImage或FileVideo相关,永远不应该同时存在,而且永远不会。
使用注释语法解决上述问题的工作示例是什么?
或许我正在以错误的方式看待这个?
我的设计理念;使用MogileFS存储文件,MogileFS将每个文件的多个副本保存在索引在文件名上的服务器子集上。 FileVideo包含不同属性(缩略图,调整大小等)的文件名列表,这些文件名根据文件类型(E.G FileVideo和FileImage)而不同。文件本身的路径将由FileVideo关系加载到Doctrine 2之外的MogileFS映射器。业务逻辑应仅关注包含ref的内容模型
答案 0 :(得分:2)
考虑某种继承。 FileVideo和FileImage可以是某些父实体“File”的子类,而您的Content实体将具有@OneToOne或@ManyToOne与“File”的关系。您将被留给自己的设备以确保Content.file不为空。
请注意,在这种情况下,在表 - 表和单表继承实现之间存在权衡决定。如果您的继承图可能会增长,CTI将提供更加规范化的架构,可以说更灵活,但force doctrine to always eager-load the relation