当前位置: 首页 > 后端技术 > PHP

获取多于三级的分类

时间:2023-03-29 15:22:36 PHP

当你在数据库中存储了一个多于三级的数据树,你想在前端展示它,你会怎么做?下面是我在做项目时遇到的一些想法(本项目由thinkphp5开发)。数据库:demand_id为每个类别的ID值,parent_id用于对树进行分类,第一层parent_id的值为0,第二层parent_id的值为其parent的demand_id值,第三层的parent_id是它的第二层parent的demand_id值,第四层和第五层也往后推...Model://获取第三层分类publicfunctiongetTree(){$fields='demand_id,demand_name,parent_id,sort,status';$result=Db::name('demand_class')->field($fields)->where(array('parent_id'=>0,'status'=>'Y'))->order('parent_idasc,按升序排序')->选择();如果(!$result)返回false;$rs=数组();//顶层不显示图片,二级不显示foreach($resultas$v){$cate_id=$v['demand_id'];$rs[$cate_id]['cate_id']=$v['demand_id'];$rs[$cate_id]['cate_name']=$v['demand_name'];$data=$this->_son_cate($v);if($data){foreach($dataas$key=>$val){//if(!isset($val['child']))//继续;//是否有词分类//去掉二级图片//unset($val['url']);$rs[$cate_id]['chilid'][]=$val;}}}foreach($rsas$vv){$info[]=$vv;}返回$信息;}privatefunction_son_cate($pcate_info){$pcate_id=$pcate_info['demand_id'];$fields='demand_id,demand_name,parent_id,sort,status';$result=Db::name('demand_class')->field($fields)->where(array('parent_id'=>$pcate_id))->order('parent_idasc,sortasc')->select();如果(!$result)返回false;foreach($resultas$v){$cate_id=$v['demand_id'];$rs[$cate_id]['cate_id']=$v['demand_id'];$rs[$cate_id]['cate_name']=$v['demand_name'];$data=$this->_son_cate($v);if($data){foreach($dataas$value){if(!is_file(BASE_UPLOAD_PATH.'/'.ATTACH_COMMON.'/category-pic-'.$value['cate_id'].'.jpg')){$value['image']=PHONE_TEMPLATES。'/'。图片。'/'。'default_goods_image.gif';}else{$value['image']=UPLOAD_SITE_URL.'/'。附件常见。'/类别图片-'。$值['cate_id']。'.jpg';}//$value['url']=htmlspecialchars_decode($value['gc_link']);$rs[$cate_id]['child'][]=$value;}}}返回$rs;}Contraller:publicfunctionedit(){//分类$md_goods_class=Model('demand_class');$denamd_class=$md_goods_class->getTree();$this->assign('denamd_class',$denamd_class);返回$this->fetch('demand_from');}前端demand_from.html点击选择发布类型">">">我之前遇到的问题:我在前端看的时候发现了cate_id这个字段,我去它的controller里面找它用到的demand_class数据表,然后去数据表里面发现没有这个字段,通过我仔细的查找,我发现这个字段是从Model定义的