【发布时间】:2013-02-27 21:11:15
【问题描述】:
我的数据库表中有名为 pages
的记录结构如下:
id | parent_id | title
如果 parent_id == 0 表示该行是父行
如果 parent_id != 0 表示该行是子行
我可以使用 CodeIgniter activerecord 获取所有记录,例如:
$query = $this->db->get('pages');
结果是这样的:
Europe
Mexico
Spain
Africa
Germany
Canada
America
Egypt
France
但我需要使用一些 groupby 或其他东西对结果重新排序,以便它将 db 中具有相同 parent_id 的所有行分组,然后生成 get(),因此结果将如下所示:
Africa
Egypt
America
Canada
Mexico
Europe
Germany
France
Spain
其中 parent_id = 0 是非洲、美洲和欧洲
和
埃及有例如parent_id = 1 加拿大和墨西哥 parent_id = 2 等等根据他们父母的ID
怎么做?
顺便说一句。文本缩进和css都没问题,我只是好奇foreach循环本身的结果数组。
【问题讨论】:
-
有什么想法可以解决这个问题吗?
-
我不明白你的桌子的结构,你的父母和孩子在同一张桌子上吗?
-
使用 MySQL(缺少递归查询),您不能仅使用 SQL 来做到这一点。您需要在客户端代码或存储过程中执行此操作
-
我可以使用 2 个 foreach 循环(一个在另一个循环中)来做到这一点,但我在想也许它可以使用活动记录来完成并在我的模型中完成
标签: mysql arrays codeigniter activerecord