无限极分类获取数据方法

复制代码
<?php
namespace app\admin\model;

use think\Model;

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; } }
复制代码
posted @   艾薇-Ivy  阅读(460)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示