1

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

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

  • 我应该使用类表继承吗?(所以 Booking 和 Refund 扩展了一些只有 $id 和 $creation_time 属性的类)
  • 我应该使用单表继承吗?(因此所有预订和退款数据都存储在一个表中)
  • 还有什么?
4

1 回答 1

0

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

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

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

SELECT id, price, whatever, 'booking' as type FROM booking 
UNION
SELECT id, price, whatever, 'refund' as type FROM refund 
ORDER BY created
于 2013-09-18T07:02:09.857 回答