integer('per_page', 15), 100)); $mealPosts = MealPosts::query() ->where('user_id', $request->user()->getKey()) ->latest('eaten_at') ->paginate($perPage) ->withQueryString(); return MealPostsResource::collection($mealPosts); } public function store(MealPostsRequest $request): JsonResponse { $mealPost = MealPosts::create([ ...$request->validated(), 'user_id' => $request->user()->getKey(), ]); return (new MealPostsResource($mealPost)) ->response() ->setStatusCode(201); } public function show(Request $request, MealPosts $mealPost): MealPostsResource { $this->abortIfNotOwner($request, $mealPost); return new MealPostsResource($mealPost); } public function update(MealPostsRequest $request, MealPosts $mealPost): MealPostsResource { $this->abortIfNotOwner($request, $mealPost); $mealPost->update($request->validated()); return new MealPostsResource($mealPost->refresh()); } public function destroy(Request $request, MealPosts $mealPost): Response { $this->abortIfNotOwner($request, $mealPost); $mealPost->delete(); return response()->noContent(); } private function abortIfNotOwner(Request $request, MealPosts $mealPost): void { abort_unless($request->user(), 401); abort_unless($mealPost->user_id === $request->user()->getKey(), 404); } }