无限极分类获取数据方法

Posted ivy-zheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无限极分类获取数据方法相关的知识,希望对你有一定的参考价值。

<?php
namespace appadminmodel;

use thinkModel;

class GoodsCate extends Model
{

//获取分类树 public function get_tree ($pid = 0,$field = ‘*‘){ $list = self::all(function($query)use($pid,$field){ $query->where([‘pid‘=>$pid])->field($field); }); foreach ($list as &$v){ if(self::get([‘pid‘=>$v[‘id‘]])){ $v[‘child‘] = self::get_tree($v[‘id‘],$field); } } return $list; } //根据id获取所有层级父类id public static function get_parent ($id = 0){ $list = self::all(); $arr = array_column($list,‘pid‘,‘id‘); $ids[] = $id; while($arr[$id]) { $id = $arr[$id]; $ids[] = $id; } return $ids; } //根据id获取所有子级id public static function get_child ($id,&$ids=[]){ array_push($ids,$id); $list = self::where(‘pid‘,$id)->column(‘id‘); foreach ($list as $v) { self::get_child($v,$ids); } return $ids; } //根据id获取当前数据及其子类列表 public function get_list ($id=0,$field=‘*‘,$where){ $info = self::where(‘id‘,$id)->alias(‘goods_cate‘)->field($field)->find(); if($info) { $list[] = $info; } $list = $this->get_data($id,$list,$field,$where); return $list; } public function get_data($id,&$list=[],$field,$where) { $child = self::where(‘pid‘,‘in‘,$id)->alias(‘goods_cate‘)->field($field)->where($where)->select(); if($child) { foreach ($child as $item) { $list[] = $item; self::get_data($item[‘id‘], $list,$field,$where); } } return $list; } }

以上是关于无限极分类获取数据方法的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询:无限极分类,获取父类下所有子类

无限极分类原理与实现(转)

无限极分类不用递归生成多维数组(树)的方法

thinkphp无限极分类

无限极分类 获取顶级id

有关无限极分类并排序问题