原则2存储不同对象的最佳方法 - 在一个列表中显示


Doctrine2 what is the best way to store different objects - to show in one list

我有两种对象:预订和退款(它们完全不同)。
我需要在一个列表中显示它们 - 按创建时间排序。
此外,我还必须导出以 excel - 所以我需要生成数百万行的列表。

使用原则 2 存储它们的最佳方法是什么:

  • 我应该使用类表继承吗?(因此预订和退款扩展了一些只有$id和$creation_time属性的舱位)
  • 我应该使用单表继承吗?(因此所有预订和退款数据存储在一个表中)
  • 别的?

CTI 和 STI 对于您遇到的问题没有真正的区别。但是你的假设有点不对劲。如果对象有共同点,你应该继承它们,但你说它们是完全不同的 - 确保它们确实以逻辑方式共享一些点。

尽管如此,教义继承有其缺点,请确保在开始之前了解它们。

另一种选择是,如果是单个查询,则仅考虑联合。通过这种方式,您可以从两个表中获取内容,使它们共享相同的界面。尽管您需要使用本机查询。

SELECT id, price, whatever, 'booking' as type FROM booking 
UNION
SELECT id, price, whatever, 'refund' as type FROM refund 
ORDER BY created