我有一些数据存储在表中,如下所示:
id parent_id name
1 0 Entry 1
2 0 Entry 2
3 0 Entry 3
4 1 Child of entry 1
我想把它变成一个嵌套数组,如下所示:
array(
array(
'id' => 1,
'parent_id' => 0,
'name' => 'Entry 1',
'children' => array(...)
),
...
);
理想情况下,它需要支持无限量的嵌套(带孩子的孩子)。我的表是否设置为支持这个,如果是这样,我将如何使用表中的数据生成这种数组?如果没有,我应该如何设置我的桌子?
答案 0 :(得分:5)
这里有一个关于在mysql中管理分层数据的非常好的描述: managing hierarchical data 这是构建嵌套数组的另一个好例子: building nested arrays
您可以考虑使用嵌套集模型。如果你要查询mutch,那么它比你现在使用的邻接模型更好。
希望有所帮助。
答案 1 :(得分:0)
您不会从“普通”SQL数据集中获取分层数据,但您可以编写一个递归执行此操作的函数。我目前无法提供代码,但您可能会明白这一点。