1 回答
TA贡献1783条经验 获得超4个赞
既然您想拥有尽可能深入的自由,那么以下解决方案可能会起作用:
Table: features
| id | name |
|----|-------|
| 1 | Apple |
| 2 | Red |
| 3 | Green |
| 4 | Sweet |
| 5 | Sour |
| 6 | Cake |
| 7 | Cider |
Table: feature_parent_child // maybe you have a better name
| parent_id | child_id |
|-----------|----------|
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
如果我们遵循我们的关系,我们最终可能会:
Apple -> Red -> Sweet -> Cake -> ...
Apple -> Green -> Sour -> Cider -> ...
这样我们就可以深入到我们想要的一切。同样,我们可以将其他功能的子功能作为“根”功能:
Cake -> Sugar -> Sweet -> Apple
Cider -> Party -> Happy -> Cake -> Birthday
困难在于管理功能的数量。
评论后更新
由于水平深度的数量无限,一次加载所有选项并不明智。因此,我们被迫通过执行单独的请求来加载下一个功能。
首先,我们可以返回给定功能的所有子代:
用户选择第一个功能
id 1
。正在进行API调用,并返回
id 1
response的所有子级[2, 3]
。填写新的选择输入。
用户选择第二个功能
id 2
。正在进行API调用,并返回
id 2
response的所有子级[4]
。...
我认为,如果我误会了,请原谅,也有可能让每个功能都由不同的孩子来照顾前任父母。但是,这需要更多的逻辑。
例子:
Apple -> Red
Apple -> Green
Red -> Apple -> Tasty
Red -> Apple -> Cake
我们可以看到,Apple
有两个孩子的特点Red
和Green
。但是,当我们Red
作为父母时,我们就会看到它Apple
具有两个不同的功能,Tasty
和Cake
。需要执行以下步骤。
用户选择第一个功能
Red
。获取具有
Red
作为父级的所有功能。这是Apple
在给定的例子。用户选择
Apple
。获取所有具有
Apple
作为父级和Apple
具有Red
作为父级的对象。是Tast
和Cake
。
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报