按顺序存储产品 - 下订单后删除产品

Storing products in order - product is deleted after order placed

我有一个订单 table,目前存储了产品 ID 和数量。

但是,如果产品从站点中删除,那么在获取订单数据时,订单和产品之间将不会有任何关系(产品不再存在)。

纠正此问题的最佳方法是什么?我需要在订单中存储产品名称等吗?

我不建议首先硬删除您的产品。

相反,您可以通过向名为 deleted 的产品 table 添加额外的 bool 并在删除产品时将其放入 true 来软删除它们。这样您就可以保留对旧的、已删除的产品的引用。

Note that you will have to change your SELECT query to include WHERE deleted = false. So you only get the products that aren't deleted.

如果您不小心删除了您不想删除的产品,这也很有用。因为你可以很容易地把它改回来。

某些系统 (*) 完全按照您在问题中指出的方式处理此问题 - 通过将产品名称(和其他相关数据)复制到订单中,这样即使订单中仍然包含所有信息如果产品被删除。

(*) 比如OpenCart和Zen Cart都是这样做的。