异动商品会影响到订单内的商品
在 order
表中有将收货地址使用 json 格式快照起来,避免地址被异动后因外键连接异动而影响到订单地址,但是在 order_item
表中與商品、SKU 却还是用外键连接,这样不是就会因商品异动导致订单资讯有误、甚至被删除吗?
database/migrations/< your_date >_create_order_items_table.php
$table->unsignedBigInteger('product_id');
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->unsignedBigInteger('product_sku_id');
$table->foreign('product_sku_id')->references('id')->on('product_skus')->onDelete('cascade');
我目前有想到两种解法,想了解一般会如何解决这个问题?
- 于
order_item
表上将商品、SKU 快照存起来,保留product_id
跟product_sku_id
,但不加上.onDelete('cascade')
。这样就可以在商品异动时不会影响到订单上的商品 (订单上就只显示快照的内容,而点击订单上的商品一样能连到商品的主页)。 - 在商品上架过(或有成立订单)之后,就禁止异动及删除商品、SKU ,仅能将商品下架。
推荐文章: