欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

无限级分类问题

程序员文章站 2022-06-11 20:51:20
...

无限级分类问题

无限级分类 我现在知道最底部节点 也就是知道无限级分类问题

用一个方法找出所有的父节点!谢谢

回复内容:

无限级分类问题

无限级分类 我现在知道最底部节点 也就是知道无限级分类问题

用一个方法找出所有的父节点!谢谢

  1. 如果你问的是如何用一句 SQL 语句来找出所有的父节点的话,join 可能可以实现,但是不建议用数据库实现。一是尽量减小粒度(虽然实践表明绝大多数的减小粒度都是无用功),使其便于修改;二是这样会给数据库造成较大压力,使流程处理时间大幅增加,数据库不擅长逻辑处理,更擅长简单的取。

  2. 如果你问的是如何在一个方法中取出,高级语言有一个普遍的语法特性,叫 递归,说白了就是自己调用自己。
    我们来构思一下实现方式(php语言为例):

$father = "";

public function get_all_father($son_of_son) {

    global $father;
    if (找他爹($son_of_son)) {

        $他爹 = 找他爹($son_of_son);
        $father = $father.'.'.$他爹; //以 . 隔开一层一层的father
        get_all_father($他爹);
    }

    return $father.'.'.$son_of_son;
}

public function 找他爹($儿子) {

    if (在数据库里找到($儿子)的爹了) {
        return 他爹;
    } else {
        return FALSE;
    }
}

//特别声明,除了那一句 “在数据库里找到($儿子)的爹了” 和 “return 他爹;” 是我简写了以外,其他代码都是可以运行的,没错,汉字也行,以utf-8编码保存就行。

这只是一个思路,离实际能在symfony里运行的代码还有很大差距。当然这是在两个function里实现的,你可以把下面那个function缩成一行放在上面的里面......

按存储结构不同,这个要看你的表格结构,不能靠猜的。

常见的有,链表式的必须递归回溯,左右值式的所有超集并按左值排序。

相关标签: symfony php