Doctrine2存储不同对象的最佳方式是什么 - 在一个列表中显示

时间:2013-09-17 08:53:26

标签: php symfony doctrine-orm

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

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

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

1 个答案:

答案 0 :(得分: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