《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
关于 LearnKu
013. 嵌套集合模型(无限极分类)——kalnoy/nestedset(代替 baum/baum)
当技术没办法解决可以考虑变更业务逻辑。还有你这个需求就很不明确。下级和上级平级或者高这个本身就矛盾
等级无限?还有关系等级为2 是啥意思,感觉主要问题还是因为可以变为上级导致数据上不好处理
可能需要确认一下需求,我从以下几点帮楼主分析下:
这点包括对读写效率要求,楼上提供的各种方案几乎都是基于关系型数据库的,除了递归方案以外,都是通过确保读效率降低写的方案。当然,如果楼主的业务场景对写入效率不敏感,自然用以上方案即可。
另外可以换个角度来分析楼主的需求,推荐关系既然是分上下级的,是否存在级数限制?如果存在级数限制且是个位数的话,完全可以通过快照所有上级ID的方式来存储和查询。
如果读写效率都敏感,且要达到真正的无限分级,我建议不如抛开关系型数据库的限制使用类似 Neo4j 这样的图数据库专门解决此类问题。
使用Nestedset,搜索一下就有,上面发的那个教程居然还付费,多少有点侮辱人了
使用neo4j
这种数据结构相当于多叉树,用『树查询』思路解决: 在原有表结构中增加一列 path,为路径,通过 like 单边查询实现查到所有级联下级。
查所有 C 的下级(含 C,要排除 C 再加条件 id != 3)
查所有 E 的上级,把『路径』split 一下就好了
“2 的下级 4,有可能变成跟 2 平级,有可能是 2 的上级”
是否会存在多次关联,例如4的父级是2,是否会关联到另外一个2?如果不会关联的话,平级变更,只需要解除2和4的关联关系,把4的level变为2就行。
如果4变为了2的平级,那么4下面的关联的子级是否会变更level?例如,从4变为了level2,那么4关联的5,它的level还是5吗?那么关联的level岂不是就成了level2-关联-level5了?
如果是4变为了2的上级,那么4之前关联的子关系又如何处理?还是说不区分层级(level),只要是子级就行?