thinkphp 无限级查询树结构
控制器
$list = $this->CateModel->where(['status'=>1])->order(['pid' => 'asc','sort'=>'desc','id'=>'asc'])->select(); if($list){ $tree = tree($list,0,'pid'); return msg($tree,'获取成功',1); }else{ return msg('','获取失败',0); }公共方法
/** * 树结构 */ function tree($list, $parentId = 0, $pid = 'parent_id', $childrenName = 'children') { $result = [];
foreach ($list as $v) {
if ($v[$pid] == $parentId) {
$children = tree($list, $v['id'], $pid, $childrenName);
if (!empty($children)) {
$v[$childrenName] = $children;
}
$result[] = $v;
}
}
return $result;
}
> mysql结构
CREATE TABLE home_cate (
id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
name varchar(100) DEFAULT NULL COMMENT '标题',
img varchar(255) DEFAULT NULL COMMENT '图片',
pid int(11) DEFAULT '0' COMMENT '父级id',
sort int(11) DEFAULT '0' COMMENT '排序',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_time datetime DEFAULT NULL COMMENT '更新时间',
delete_time datetime DEFAULT NULL COMMENT '删除时间',
status int(1) DEFAULT '1' COMMENT '状态 0:禁用 1:正常',
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1030 DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';