Uso el recurso api de laravel para mi sitio FRONT-END.
En realidad, también uso la paginación de laravel para manejar la paginación en FRONT-END.
La estructura de recursos de la API es así:
{ "data": [...], "links": [...], // handle pagination "meta": [...] // handle pagination } Pero quiero enviar el recuento de los resultados de la consulta sin considerar la paginación. Por ejemplo, pagina el resultado de la base de datos en 30 pre_page y todo el resultado de la consulta es 200 y quiero enviar este recuento para ver el front-end
Decidí contar el resultado de la consulta y dar a la colección de recursos y reestructurar el recurso api de laravel para esto.
{ "data": [...], "metadata": { "count": 200 }, "links": [...], // handle pagination "meta": [...] // handle pagination } También debe saber que tal vez quiera agregar otros datos a esta colección. por ejemplo conversion rate además cuenta con metadata y no sé cómo hacerlo.
Encuentro la forma en que puedo hacer esto
En realidad, solo tengo que usar un método additional para recursos de laravel como:
$data = Project::limit(100)->get(); return ProjectResource::collection($data)->additional(['some_id => 1']);Consulte metadatos de nivel superior .
Debe crear una ResourceCollection y luego definir las meta variables adicionales en la función with .
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\ResourceCollection; class UserCollection extends ResourceCollection { /** * Transform the resource collection into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { return parent::toArray($request); } /** * Get additional data that should be returned with the resource array. * * @param \Illuminate\Http\Request $request * @return array */ public function with($request) { return [ 'meta' => [ 'key' => 'value', ], ]; } }