问题标签 [mptt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
494 浏览

php - 修改前序树遍历——寻找下一个节点

我有这个数据:

我需要按以下顺序(id)遍历这个层次结构:1 > 3 > 5 > 2 > 4

我怎样才能做到这一点?

假设我想找到node_x的下一个节点。

此公式仅在某些情况下有效(节点 ID 为 1、3、5、2)。节点 2 的下一个节点应该是 4。

0 投票
1 回答
399 浏览

php - 如何将 MPTT 层次结构数据正确排序为多维数组。

我试图弄清楚如何编写一个返回多维数组的函数。我知道如何使用“category_parent”值编写函数。但我只是想写一个函数,它可以通过只使用左右键来创建多维数组。

任何帮助表示赞赏!

0 投票
2 回答
1853 浏览

mysql - 使用 CakePHP Tree Behavior 在一张表中拥有多棵树

我在我的 CakePHP 应用程序中将一个平面列表转换为一个树,并发现存在具有此功能的现有行为。我的表不是一棵巨树,而是由许多用户生成的树组成:基本上,每个用户都可以创建自己的文件夹结构。然而,树行为似乎只会跟踪整个表中的 lft/rght 值,就好像它是一棵巨树一样。因此,如果添加了新文件夹或子文件夹,则需要更新整个表。

我对树行为的实际工作方式是否有误,或者如果没有,有没有办法解决这个问题?

参考链接:

0 投票
1 回答
2524 浏览

django - Django-mptt 完全错误还是我做错了?

我正在尝试使用django-mptt,但运气不佳。这是 svn 最新的 Python2.5、windows、sqlite3、Django 1.2pre、django-mptt。

编码:

模型:

设置:

这应该创建一棵树,每个非叶节点都有一个根和两个子节点。

现在乐趣开始了:

为什么很多祖宗都错了?例如,节点 10 应该有祖先,(0,1,10)

我做错了什么还是 django-mptt 中有错误?

0 投票
1 回答
365 浏览

mysql - MPTT选择根元素mysql

我应该使用什么 mysql 查询来选择根元素?假设我有这样的树结构: http ://www.ipix.lt/desc/18496369 我想选择(Vaisiai,Daržovės)元素。

0 投票
1 回答
3310 浏览

python - 在 Python/Django 中存储分层(父/子)数据:MPTT 替代方案?

我正在寻找一种在 Django 中存储和使用分层(父/子)数据的好方法。我一直在使用django-mptt,但它似乎与我的大脑完全不兼容 - 我最终在不明显的地方遇到不明显的错误,主要是在树中移动东西时:我最终状态不一致,其中节点和它的父节点会不同意他们的关系。

我的需求很简单:

  • 给定一个节点:
    • 找到它的根源
    • 找到它的祖先
    • 找到它的后代
  • 用一棵树:
    • 轻松移动节点(即更改父节点)

我的树会很小(最多 10k 个节点超过 20 个级别,通常要小得多,比如 10 个节点具有 1 个或 2 个级别)。

我不得不认为必须有一种更简单的方法在 python/django 中创建树。还有其他方法可以更好地保持一致性吗?

0 投票
2 回答
2330 浏览

sql - 用于在 MySQL 中遍历树的深度嵌套子查询

我的数据库中有一个表,我使用混合嵌套集 (MPTT) 模型(具有lftrght值的模型)和邻接列表模型(存储parent_id在每个节点上)存储树结构。

这个问题与树的任何 MPTT 方面都没有关系,但我想我会留下它,以防万一有人知道如何利用它。

我想将别名路径转换为特定节点。例如:"users.admins.nickf"将找到别名为“nickf”的节点,该节点是别名为“admins”的节点的子节点,别名“admins”是位于根目录的“users”的子节点。上有一个唯一索引(parent_id, alias)

我从编写函数开始,以便将路径拆分为各个部分,然后一一查询数据库:

但后来我意识到我可以用一个查询来做到这一点,使用可变数量的嵌套:

由于子查询的数量取决于路径中的步骤数,我是否会遇到子查询过多的问题?(如果有这样的事情)

有没有更好/更智能的方法来执行这个查询?

0 投票
1 回答
385 浏览

sql-server - 在 SQL Server 2008 中将邻接表转换为 MPTT

是否有有用的工具或脚本资源来帮助从老式邻接表转换为 MPTT?

我会认为这是一些比我过去更聪明的灵魂所面临的问题,并认为我会先检查这里,以防他们在旅行中想出一个聪明的解决方案 - 在开始我自己的旅程之前一个东西。

0 投票
3 回答
8252 浏览

php - PHP中遍历树的数据结构?

我没有 CS 或数据结构方面的背景。我想创建一个 PHP 类来存储修改后的预序横向树,用于操作和与数据库同步。

基本上我需要存储如下数据:

我正在考虑使用数组,但它似乎很麻烦。如果它是这样的数组数组:array( 'name'=> "PORTABLE ELECTRONICS", 'lft' => 10, 'rgt' = 19 ),那么重复遍历该数组以确保所有数字都存在等会很麻烦。

由于 PHP 有一些新的数据结构可用,我想知道这些中的任何一个是否比使用数组能给我带来任何好处?

  • SplDouble
  • 链表
  • SplStack
  • SplQueue
  • 分裂堆
  • 最大堆
  • SplMinHeap
  • SplPriorityQueue
  • SplFixedArray
  • SplObjectStorage

编辑:这个类不会成为存储在数据库表中的树的网关。(如果是的话,我只会查询类。)它只是某种 PHP 数据结构中的独立 mmpt。

0 投票
1 回答
639 浏览

sql - 更新 SQL mptt 表中的所有父 ID

考虑一个 SQL 表,它使用MPTT(Modified Preorder Tree Traversal)方法存储分层数据。

现在我想一次更新所有的 parent_id 外键。不幸的是,我的 SQL 技能真的生疏了。谁能指出一种有效的方法来做到这一点?

这就是我尝试的方式:

不幸的是,这似乎不起作用:

错误:FROM 中的子查询不能引用相同查询级别的其他关系

感谢您的任何提示。

PS:如果重要的话,这是在 PostgreSQL 上。