select()->toArray(); // print_r($res->toArray()); return self::tidyMenuTier($res); } public static function searchBy(string $name): array { $model = new self; if ($name) { $model = $model->where('name', 'LIKE', "%$name%"); } $res = $model->select()->toArray(); // print_r($res->toArray()); return self::tidyMenuTier2($res); } /** * 本函数支持图片框二级目录搜索 * * 1. 分类目录最多支持两级 * 2. 根据 like 的检索结果,如果为根级别,则自动检索出所有子集;如果为子级别,则自动检索出上级 * 3. 为保证性能,like 的结果只取 3 条记录 * * TODO: 注意这里有一个循环 SQL */ public static function tidyMenuTier2($menusList) { $navList = []; $pids = []; $children = []; foreach ($menusList as $k => $menu) { $navList[] = $menu; if ($menu['pid'] == 0) { $pids[] = $menu['id']; } else { $children[] = $menu['pid']; } } // retrieve all children layer if ($pids || $children) { if (!$pids) { $pids = [-1]; // some skills. } else if (!$children) { $children = [-1]; } $attachmentCates = SystemAttachmentCategory::where('pid', 'in', implode(',', $pids)) ->whereOr('id', 'in', implode(',', $children)) ->select()->toArray(); // echo SystemAttachmentCategory::getLastSql(); foreach ($attachmentCates as $attchmentCate) { $navList[] = $attchmentCate; } } // print_r($navList); return self::tidyMenuTier($navList); } public static function tidyMenuTier($menusList, $pid = 0, $navList = []) { foreach ($menusList as $k => $menu) { if ($menu['pid'] == $pid) { unset($menusList[$k]); $menu['child'] = self::tidyMenuTier($menusList, $menu['id']); $navList[] = $menu; } } return $navList; } /** * 获取分类下拉列表 * @param int $id * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public static function getCateList($id = 10000, $type = 0) { $model = new self(); if ($id == 0) $model->where('pid', $id); if ($type == 1) return sort_list_tier($model->where('pid', 0)->select()->toArray()); return sort_list_tier($model->select()->toArray()); } /** * 获取单条信息 * @param $id * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public static function getinfo($id) { $model = new self; $where['id'] = $id; return $model->where($where)->select()->toArray()[0]; } }