get([ 'category_id', 'language' => 'zh-cn', 'page/d' => 1, 'size/d' => 50 ]); if ($params['size'] > 200) { // 每页不超过200条 $params['size'] = 200; } $articles = ArticleModel::with([ 'category' => fn($query) => $query->field('id, name') ]) ->field([ 'id', 'language_id', 'category_id', 'title', 'desc', 'image', 'deleted_at' ]) ->categoryId($params['category_id']??null) ->language($params['language']??'zh-cn') ->hidden(['language_id', 'category_id']) ->paginate([ 'list_rows' => $params['size'], 'page' => $params['page'] ]) ->each(function($it) { if (!empty($it['image']) && !str_starts_with($it['image'], 'http')) { $it['image'] = image_domain_concat($it['image']); } return $it; }); return success('success', $articles); } /** * 文章详情 */ public function detail() { $id = request()->param('id'); $article = ArticleModel::with([ 'category' => fn($query) => $query->field('id, name') ]) ->withoutField([ 'language_id', 'author', 'source', 'seo_title', 'seo_keywords', 'seo_desc', 'created_at', 'updated_at', 'deleted_at' ]) ->bypk($id) ->hidden(['category_id']) ->find(); if (is_null($article)) { return error('the article does not exist'); } // 图片处理 if (!empty($article['image']) && !str_starts_with($article['image'], 'http')) { $article['image'] = image_domain_concat($article['image']); } // 详情中图片处理 if (!empty($article['content'])) { $article['content'] = html_image_replace($article['content']); } return success('success', $article); } }