scramble icon indicating copy to clipboard operation
scramble copied to clipboard

Additional collection’s data: Not documenting

Open cwray-tech opened this issue 1 year ago • 1 comments

According to the docs, Additional collection data will automatically be documented when adding additional data to a collection.

use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use App\Models\TodoItem;
use Illuminate\Pagination\LengthAwarePaginator;

class TodoItemsController
{
    public function index(Request $request)
    {
        return TodoItemResource::collection(TodoItem::all())
            ->additional(['permissions' => true]);
    }
}

For my setup, (Laravel 10 with PHP 8.1) this is not working.

I'm using pagination, but I also tried without.

This is my method:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\CompanyStoreRequest;
use App\Http\Requests\CompanyUpdateRequest;
use App\Http\Resources\CompanyResource;
use App\Models\Company;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Validation\ValidationException;

class CompanyController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @param Request $request \
     * @return AnonymousResourceCollection<LengthAwarePaginator<CompanyResource>>
     * @throws AuthorizationException
     * @throws ValidationException
     */
    public function index(Request $request): AnonymousResourceCollection
    {
        $this->authorize('viewAny', Company::class);

        $this->validate($request, [
            'search' => 'nullable|string'
        ]);

        return CompanyResource::collection(
            Company::search($request->input('search'))
                ->paginate(50))
            ->additional(['search' => $request->input('search')]);
    }
}

cwray-tech avatar Feb 18 '24 21:02 cwray-tech

Works for me as follows:

<?php

namespace App\Http\Controllers\V1;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreCourseRequest;
use App\Http\Resources\CourseResource;
use App\Models\Course;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Http\Request;

class CourseController extends Controller
{
    /**
     *  Get courses
     *
     *  A paginated result.
     *
     * @return AnonymousResourceCollection<LengthAwarePaginator<CourseResource>>
     */
    public function index()
    {
        return CourseResource::collection(Course::paginate());
    }

marventhieme avatar May 13 '24 11:05 marventhieme