![](/img/trans.png)
[英]Retrieve all parent/child records from database on Laravel (hierarchical data)
[英]Retrieve hierarchical data
我正在尝试为CMS系统创建一个动态菜单,这是我的sql表,它具有一个名为content的额外字段。
parent_id order id titel
0 1 2 Home
0 2 4 Contact
0 3 9 stuff
2 1 1 more stuff
2 2 3 way more stuff
9 1 10 all stuff
我想要这个结果:
home
more stuff
way more stuff
contact
stuff
all stuff
这就是我所说的菜单:
$resultPaginas = mysqli_query($mysqli, "select id, titel, parent_id, volgorde from TABLE order by order");
if (!$resultPaginas) {
die(mysqli_error($mysqli));
}
这将显示由parent_id排序的表。
它已经完成了所有工作,我知道我需要做一个while循环,但是如何执行正确的while循环才能获得想要的结果?
ps这将是一个菜单
使用此递归函数构建菜单:
function buildMenu($parentId = 0) {
$menu = array();
$result = mysqli_query($mysqli, "SELECT `id`, `titel`, `parent_id`, `volgorde` FROM [TABLE] WHERE `parent_id` = $parentId ORDER BY `order`");
if ($result !== false) {
while ($page = $result->fetch_assoc()) {
$page["children"] = buildMenu($page["id"]);
$menu[] = $page;
}
}
return $menu;
}
像这样调用递归函数
$resultPaginas = buildMenu();
$ resultPaginas的示例内容:
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[titel] => home
[children] => Array
(
[0] => Array
(
[id] => 2
[parent_id] => 1
[titel] => more stuff
)
[1] => Array
(
[id] => 3
[parent_id] => 1
[titel] => way more stuff
)
)
)
[1] => Array
(
[id] => 4
[parent_id] => 0
[titel] => contact
)
)
首先尝试从父ID为0的表中选择全部
并做遍历
样品:
foreach($parent as $par){
//Then you need to write another query to take all submenus for current parentid menu
$submenus= mysqli_query($mysqli, "select id, titel, parent_id, volgorde from TABLE where parent_id = $par.id order by order");
//Then again loop trough
foreach($submenus as $sub){
// and add existing submenus to parent menu
}
}
注意:这只是概念抱歉,如果语法不正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.