scramble
scramble copied to clipboard
Additional collection’s data: Not documenting
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')]);
}
}
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());
}