1 回答
TA贡献1783条经验 获得超5个赞
既然您想拥有尽可能深入的自由,那么以下解决方案可能会起作用:
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 1response的所有子级[2, 3]。填写新的选择输入。
用户选择第二个功能
id 2。正在进行API调用,并返回
id 2response的所有子级[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 关注
- 181 浏览
添加回答
举报
