我的菜单结构有一个经典的邻接列表。我使用递归将它们显示为无序列表。但是,在我的管理区域中,我希望它们一个接一个地显示(在HTML表结构中)。为此,我只需要在我的MYSQL上选择以正确的顺序获取它们。
Parent 1
Child of parent 1
Child of parent 1
Parent 2
Child of parent 2
...
现在我无法想象如何做到这一点。我的表包含“ID”,“Parent_id”,“名称”,“订购”(对于每个父子,订购列从1到X设置)。示例:
id | Parent_id | name | ordering
---+-----------+-------------+---------
1 | 0 | Lorem | 1
2 | 0 | Ipsum | 2
3 | 1 | Dolor | 2
4 | 0 | Amet | 3
5 | 1 | Pract | 1
6 | 2 | Maloc | 1
应该给:
1 | 0 | Lorem | 1
5 | 1 | Pract | 1
3 | 1 | Dolor | 2
2 | 0 | Ipsum | 2
6 | 2 | Maloc | 1
4 | 0 | Amet | 3
感谢您的建议
PS:我不想使用嵌套模型,因为我可以在菜单上进行大量更新,并且不想破坏它。
答案 0 :(得分:1)
由于“a_horse_with_no_name”表示这是不可能的,因为MySQL不支持递归。所以我通过PHP和递归来完成它。
这个想法是做一个简单的递归,并尝试从当前元素中查找子元素。如果它有一些$ tree = array_merge($ tree,$ childs)就可以继续递归。