php – 从Laravel上的数据库中检索所有父/子记录(分层数据)
对于类似遗留票证的系统,我有以下简化的数据库表结构.
在列表中,我显示所有消息.单击消息时,我会显示其答案等. 问题是:现在我需要一个与此消息相关的所有父项和子项的列表结构,以及此消息在树中的位置.我怎样才能从数据库中检索它们? 我正在使用Laravel,但原始SQL也可以帮助我找到方向. 例: ╔════╦═══════════╦════════════════════════╦═════════════════╗ ║ id ║ parent_id ║ content ║ answer ║ ╠════╬═══════════╬════════════════════════╬═════════════════╣ ║ 1 ║ NULL ║ Hi,I have a problem ║ I can't help ║ ║ 2 ║ 1 ║ The problem persists ║ Ok,what is it? ║ ║ 3 ║ 2 ║ Nevermind,I got this ║ Oh,well. ║ ║ 4 ║ 3 ║ Problem is back ║ Which problem? ║ ║ 5 ║ 4 ║ The same problem again ║ ... ║ ╚════╩═══════════╩════════════════════════╩═════════════════╝ 当显示id = 4的消息时,我应该能够显示如下列表: 消息历史: 我只能想到一个循环和几个SQL查询执行,每个父和子,看起来像一个代码气味. UPDATE 如Daan所述,这个问题似乎与How to create a MySQL hierarchical recursive query重复. 我决定不删除它,因为Ravan刚刚用Laravel方法回答了它,这有助于我解决问题,所以我将把它留在这里以备将来参考. 最佳答案 由于您正在进行分层操作,因此应使用策略从数据库中保存和检索此数据.一种方法是使用Nested Set Model,这可以使它更容易. 背后的理论,一个TL; DR版本 可视化嵌套集如何工作的简单方法是考虑围绕所有嵌套集的父实体
可以像这样可视化:
数字代表左右边界.然后表可能
要获得父节点的所有子节点,您
为了得到孩子的数量,这是
为了让一个节点及其所有祖先回到根节点,你
正如您所看到的那样,查询将是递归的并且过于缓慢 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql入门Hibernate4在MySQL5.1以上版本创建表出错 type=In
- mysql – 使用LIKE搜索GROUP_CONCAT
- 【windows系统下的navicat与ubuntu中的mysql的连接方法】
- Mysql实例MySQL中使用表别名与字段别名的基本教程
- Mysql应用mysql常用命令行操作语句
- php – 如何在MySQL数据库中存储HTML颜色代码,然后搜索一系
- mysql – 带时区的日期时间格式
- Mysql必读mysql使用SQLyog导入csv数据不成功的解决方法
- mysql – 选择具有不同区号的重复电话号码的所有行?
- Mysql必读Windows 10系统下彻底删除卸载MySQL的方法教程