We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
复现步骤 如上图红框所示,有个三层树结构: 顶级 ——111 ————222
现在我想要将111的父级设置成为222,系统会提示成功,如下图所示 但是此时就会导致111的父级是222(即111的pid=222的id),但原本222的父级就是111(即222的pid=111的id)。如此一来111的父级是222,222的父级又是111,这样一来就导致了父子之间的数据环形,界面上已经无法展示111和222之间的树状关系,如下图修改成功后的界面:
但是实际数据库中这两条数据还存在,但是由于111和222的两者的pid导致了数据环形,界面上却无法显示,数据库截图如下:
总的来说:就是当修改一行数据的所属父级时,只要选择的父级是该行数据下的子级,就会发生这样的错误,一旦错误,就会导致该行数据以及它下面的子级数据形成数据环形,无法形成树状结构,且导致数据库的数据成为脏数据。
此问题所有地方有树状结构编辑的地方都可能发生,例如菜单管理也是树状结构,可以检查所有有树状结构编辑的地方,以免遗漏。
The text was updated successfully, but these errors were encountered:
484785c
代码优化,避免【菜单、部门】移动节点时出现PID数据环形问题
00f7f25
close #803
代码优化,避免【菜单、部门】移动节点时出现PID数据环形问题:elunez/eladmin#803
47806c6
@elunez 您好,你这样做虽然避免了在界面上操作出现错误的可能,但实际上这个错误还是存在的(治标不治本),比如直接调用接口,不从界面进行操作,这是存在于业务逻辑上的错误。是不是在业务代码中多添加一层逻辑上的判断,判读它选的pid不能是它自己子级的id。个人见解,望君参考,如有不同见解,还请指点一二。
Sorry, something went wrong.
之前写代码修复了下,父子节点互换是没问题,但是父节点换到子节点的子节点还是会出现问题,于是就弄成了这种方式。 如果加判断,编辑会变得复杂化。而且后台管理一般不会存在 api 调用接口去修改这个东西,以后如果有时间再改改这个
No branches or pull requests
复现步骤

如上图红框所示,有个三层树结构:
顶级
——111
————222
现在我想要将111的父级设置成为222,系统会提示成功,如下图所示


但是此时就会导致111的父级是222(即111的pid=222的id),但原本222的父级就是111(即222的pid=111的id)。如此一来111的父级是222,222的父级又是111,这样一来就导致了父子之间的数据环形,界面上已经无法展示111和222之间的树状关系,如下图修改成功后的界面:
但是实际数据库中这两条数据还存在,但是由于111和222的两者的pid导致了数据环形,界面上却无法显示,数据库截图如下:

总的来说:就是当修改一行数据的所属父级时,只要选择的父级是该行数据下的子级,就会发生这样的错误,一旦错误,就会导致该行数据以及它下面的子级数据形成数据环形,无法形成树状结构,且导致数据库的数据成为脏数据。
此问题所有地方有树状结构编辑的地方都可能发生,例如菜单管理也是树状结构,可以检查所有有树状结构编辑的地方,以免遗漏。
The text was updated successfully, but these errors were encountered: