我有这个数据库结构:
Products:
+---------------------------+
|id|name |details |price|cn|
|__|_____|_________|_____|__|
| 1|pen |somethi |100 |10|
| 2|paper|something|30 |11|
+---------------------------+
Categories:
+----------------------------+
|id | name |parent_id |
|____________________________|
|1 | granny | 0 |
|2 | dad | 1 |
|3 | grandson | 2 |
|4 | grandson 2| 2 |
+----------------------------+
Products2categories:
+-------------------------------+
| id | product_id | category_id|
|_______________________________|
| 1 | 1 | 3 |
| 2 | 1 | 2 |
| 3 | 1 | 1 |
+-------------------------------+
如您所见,该表Categories
是“嵌套的”,它引用了它自身的其他列。
我试图通过使用 CASCADE DELETE 来实现的是:
当我删除一个产品时,它也会从Products2categories
表中删除。(我已经通过使用带有表的 FK 来做到这一点......到......products
所以id
这products2categories
是product_id
一个解决的问题。
主要问题如下:
- 当我删除一个类别时,我想删除它的所有“儿子”,注意: “儿子”类别可以有另一个“儿子”类别,例如在我给出的表格中,其中
dad
的儿子granny
和grandson and grandson2
是这dad
意味着,每当我删除它时,granny
它也会删除dad,granson,grandson2
。此外,我希望这也删除与这些类别相关的所有产品。
我很确定需要 PHP 来做到这一点,但我也想知道使用什么 FK 以及在哪里使用。
注意:如果您需要更多详细信息,请随时询问。