无限级分类 我现在知道最底部节点 也就是知道
用一个方法找出所有的父节点!谢谢
无限级分类 我现在知道最底部节点 也就是知道
用一个方法找出所有的父节点!谢谢
如果你问的是如何用一句 SQL 语句来找出所有的父节点的话,join 可能可以实现,但是不建议用数据库实现。一是尽量减小粒度(虽然实践表明绝大多数的减小粒度都是无用功),使其便于修改;二是这样会给数据库造成较大压力,使流程处理时间大幅增加,数据库不擅长逻辑处理,更擅长简单的取。
如果你问的是如何在一个方法中取出,高级语言有一个普遍的语法特性,叫 递归,说白了就是自己调用自己。
我们来构思一下实现方式(php语言为例):
<code class="lang-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编码保存就行。 </code>
这只是一个思路,离实际能在symfony里运行的代码还有很大差距。当然这是在两个function里实现的,你可以把下面那个function缩成一行放在上面的里面......
按存储结构不同,这个要看你的表格结构,不能靠猜的。
常见的有,链表式的必须递归回溯,左右值式的所有超集并按左值排序。