with(['categoryItem']) ->where('status', 1) ->whereNotNull('published_at'); if ($request->filled('category_dict_item_id')) { $query->where('category_dict_item_id', (int) $request->query('category_dict_item_id')); } $paginator = $query ->orderByDesc('published_at') ->orderByDesc('id') ->paginate((int) $request->query('page_size', 20)) ->withQueryString(); $paginator->getCollection()->transform( fn (News $news) => MiniappPresenter::serializeNewsList($news) ); return $this->paginated($paginator); } public function show(int $news): JsonResponse { $model = News::query() ->with(['categoryItem']) ->where('status', 1) ->whereNotNull('published_at') ->findOrFail($news); return $this->ok(MiniappPresenter::serializeNewsDetail($model)); } }