withCount('items')->orderBy('key')->get(); return response()->json([ 'success' => true, 'data' => MenuResource::collection($menus), ]); } public function show(int $id): JsonResponse { $menu = Menu::withCount('items')->find($id); if (! $menu) { return response()->json([ 'success' => false, 'message' => 'Không tìm thấy menu', ], 404); } return response()->json([ 'success' => true, 'data' => MenuResource::make($menu), ]); } public function store(StoreMenuRequest $request): JsonResponse { $menu = Menu::create($request->validated()); return response()->json([ 'success' => true, 'message' => 'Tạo menu thành công', 'data' => MenuResource::make($menu), ], 201); } public function update(int $id, StoreMenuRequest $request): JsonResponse { $menu = Menu::find($id); if (! $menu) { return response()->json([ 'success' => false, 'message' => 'Không tìm thấy menu', ], 404); } $menu->update($request->validated()); return response()->json([ 'success' => true, 'message' => 'Cập nhật menu thành công', 'data' => MenuResource::make($menu), ]); } public function destroy(int $id): JsonResponse { $menu = Menu::find($id); if (! $menu) { return response()->json([ 'success' => false, 'message' => 'Không tìm thấy menu', ], 404); } $menu->delete(); return response()->json([ 'success' => true, 'message' => 'Xoá menu thành công', ]); } }