with([ 'course' => fn ($query) => $query->with(['courseSystemItem', 'coverMedia'])->withCount('signups'), 'activity' => fn ($query) => $query->with(['activityTypeItem', 'sessions'])->withCount('signups'), 'news' => fn ($query) => $query->with(['categoryItem']), ]) ->where('status', 1) ->orderBy('sort') ->orderByDesc('id') ->get() ->map(fn (Banner $banner) => MiniappPresenter::serializeBanner($banner)) ->values() ->all(); return $this->ok(['items' => $items]); } public function show(int $banner): JsonResponse { $model = Banner::query() ->where('status', 1) ->where('type', Banner::TYPE_CUSTOM) ->findOrFail($banner); return $this->ok(MiniappPresenter::serializeBanner($model)); } }