【发布时间】:2014-07-05 06:37:06
【问题描述】:
我想在 MySQL 中存储一个嵌套关联数组。我需要这个用于我网站上的可嵌套导航菜单。嵌套的级别应该没有限制。
我研究了nested set model 和adjacency list,但不确定哪个可以满足我的需求。
理想情况下,我将能够以一种可以在 PHP 中重建关联数组的方式查询我的表,然后使用它来构建我的导航菜单。 记录可能会被添加/更改/重新排序,但这只会很少发生。
我正在寻找 MySQL (InnoDB) 的示例表结构,查询以获取和重新排序记录,以及更新、删除和添加新记录。我在 PHP 中使用 PDO,因此任何关于如何将记录集转换为关联数组的示例代码也会有所帮助。
【问题讨论】:
-
可能会有所帮助,我仍在使用此解决方案:stackoverflow.com/questions/9224229/…
-
不幸的是,我看不出这将如何与 id - parent_id 设置一起使用。重构数组以包含子数组的递归函数要求项的父项必须已经在数组中,然后才能添加它。即使使用 ORDER BY,也无法通过 SQL 中的 select 语句来保证这一点,因为项目的 id 与其在列表中的顺序无关
-
我将上面的代码与 MySQL 一起使用,它运行良好。这是我的表:pastie.org/9182539
navigation_link_id是“父 ID”。我只使用select * from tbl order by display_order。我觉得和穆图的建议是一样的。 -
顺序只在
<ul>列表中很重要,不需要是唯一的。如果分配了 parentID 但它不存在,则不会显示该项目。我现在有点想解释它,但就像我说的那样,我已经使用该帖子中的代码很长时间了。我在用户进行导航的地方运行 CMS。 -
这应该是有用的阅读:stackoverflow.com/questions/4048151/…