error('请输入搜索关键词'); } // 根据类型选择对应的表和分类表 if ($type == 'article') { $model = new Articles(); $categoryModel = new ArticlesCategory(); $detailUrl = '/index/articles/detail'; $categoryUrl = '/index/articles/category'; $status = 2; // 文章状态为2 $fields = 'id, title, cate, image, author, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate'; } else if ($type == 'resource') { $model = new Resources(); $categoryModel = new ResourcesCategory(); $detailUrl = '/index/resources/detail'; $categoryUrl = '/index/resources/category'; $status = 1; // 资源状态为1 $fields = 'id, title, cate, icon, uploader, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate'; } else { $this->error('无效的搜索类型'); } // 搜索内容 $items = $model->where('title', 'like', "%{$keyword}%") ->where('status', $status) ->field($fields) ->order('create_time desc') ->page($page, $limit) ->select(); // 获取总数 $count = $model->where('title', 'like', "%{$keyword}%") ->where('status', $status) ->count(); // 获取分类名称和图片 foreach ($items as &$item) { if ($type == 'article') { $category = $categoryModel->where('id', $item['cate']) ->field('id, name, image') ->find(); $item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'image' => '']; $item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID // 如果文章的图片为空,使用分类的图片 if (empty($item['image'])) { $item['image'] = $item['category']['image']; } if (empty($item['image'])) { $item['image'] = '/static/images/default.jpg'; } } else { $category = $categoryModel->where('id', $item['cate']) ->field('id, name, icon, cid') ->find(); $item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'icon' => '', 'cid' => 0]; $item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID // 如果资源的图片为空,使用分类的图片 if (empty($item['icon'])) { $item['icon'] = $item['category']['icon']; } if (empty($item['icon'])) { $item['icon'] = '/static/images/default.jpg'; } // 根据分类cid判断资源类型 if ($item['category']['cid'] == 8) { $item['detail_url'] = url('game/detail', ['id' => $item['id']]); } else { $item['detail_url'] = url('program/detail', ['id' => $item['id']]); } } } // 准备视图数据 $viewData = [ 'keyword' => $keyword, 'type' => $type, 'items' => $items, 'detailUrl' => $detailUrl, 'count' => $count, 'page' => $page, 'limit' => $limit ]; return view('index', $viewData); } }