我有一个选择菜单,用户可以在其中选择特定功能,并根据他们选择的内容显示一个带有新选项的新选择菜单。根据他们选择的内容,此过程可以重复几次。
例如,如果选择菜单显示以下项目: apple, mango, orange.
用户选择apple:他们将获得与苹果相关的三个附加选项–例如,brown, red, green.如果用户选择orange,他们可能会看到red, orange.红色显示两次。
我的主要问题是有一个很好的追踪方法。
我目前的解决方案
我有两个桌子-features和feature_group.
feature_group有列:id,name features有列:id,group_id,name,links
如果我们回到前面的例子,
我目前将选项存储在该links部分中。
feature_group 桌子:
| id | name |
|----|--------|
| 1 | Fruit |
| 2 | Colour |
| 3 | Taste |
features 桌子:
| id | group_id | name | links |
|----|----------|--------|-----------|
| 1 | 1 | Apple | |
| 2 | 1 | Mango | |
| 3 | 1 | Orange | |
| 4 | 2 | Red | 1,2,3 |
| 5 | 2 | Green | 1,2 |
| 6 | 2 | Orange | 3 |
| 7 | 3 | Slicy | 1,2;1,2,3 |
| 8 | 3 | Okay | 1,2,3,4 |
| 9 | 3 | Bad | 2,4 |
正如你所看到的,links列包含id的features在同一个表。因此,例如,Red当用户选择任何选项时,带有名称的第四行是可见的Apple, Mango, Orange.
同样,如果他们不能选择第一个选项和第二个选项,则不能选择Bad第三个选项。MangoRed
将;用于包括其他选项对也是如此。
我希望这是有道理的。
这是我的表结构。在代码中,我将其作为数组:
$color = [
'Apple' => [
'Red',
'Green',
],
'Mange' => [
'Red',
'Green',
],
'Orange' => [
'Red',
'Orange',
],
];
$taste = [
'Red' => [
'Slicy'
],
// so on...
];
我认为这不是最好的方法。特别是如果以后要添加更多内容,则必须大量修改数据,这可能会很麻烦。
如何解决此问题?
慕娘9325324