mid] ]; $array = $this->where($where) ->field('id,pid,name,cover_img,advert_img,advert_img_link')->order('sort desc')->select() ->toArray(); return listToTree($array); } /* * 获取列表信息 */ public function getListAll($where) { //获取一级权限 $data = $this->where($where)->where(array('pid' => 0))->order('sort desc,id asc')->select(); $redata = array(); if (!empty($data)) { $idData = array(); foreach ($data as $value) { $idData[] = $value['id']; } //获取二级权限 $list = $this->where(array('pid' => $idData))->order('sort desc,id asc')->select(); foreach ($data as $value) { $temp = array(); $temp['id'] = $value['id']; $temp['pid'] = $value['pid']; $temp['name'] = $value['name']; $temp['cover_img'] = $value['cover_img']; $temp['advert_img'] = $value['advert_img']; $temp['sort'] = $value['sort']; $temp['create_time'] = $value['create_time']; $temp['level'] = 0; $temp['list'] = []; //写入下一级信息 foreach ($list as $val) { if ($val['pid'] == $value['id']) { $val['level'] = 1; $temp['list'][] = $val; } } $redata[] = $temp; } return $redata; } } public function getInfiniteNameData($where, $order = '', $limit_level = 0, $name = 'name', $relation_id = 'pid', $keyword = 'level', $now_level = 0, $return_data = []) { if (!empty($limit_level)) { if ($limit_level <= $now_level) { return $return_data; } } if ($now_level == 0) { $is_key = array_search($relation_id, array_column($where, 0)); if ($is_key) { $where[$is_key] = [$relation_id, '<=', 0]; } else { $where[] = [$relation_id, '<=', 0]; } } if (empty($order)) { $order = $this->getPk() . ' desc'; } $array = $this->where($where)->order($order)->select()->toArray(); if (empty($array)) { return $return_data; } foreach ($array as $key => $value) { if ($now_level != 0) { $value[$name] = $this->where($this->getPk(), $value[$relation_id])->value($name) . '-' . $value[$name]; } $is_key = array_search($relation_id, array_column($where, 0)); if ($is_key) { $where[$is_key] = [$relation_id, '=', $value[$this->getPk()]]; } else { $where[] = [$relation_id, '=', $value[$this->getPk()]]; } //$where[$relation_id] = $value[$this->getPk()]; $value[$keyword] = $now_level; $return_data[] = $value; $return_data = $this->getInfiniteNameData($where, $order, $limit_level, $name, $relation_id, $keyword, $now_level + 1, $return_data); } return $return_data; } }