18
common/Core/Resources/BaseJsonResource.php
Executable file
18
common/Core/Resources/BaseJsonResource.php
Executable file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Core\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class BaseJsonResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* @param mixed $resource
|
||||
* @return AnonymousResourceCollection
|
||||
*/
|
||||
public static function paginated($resource)
|
||||
{
|
||||
return new PaginatedResourceCollection($resource, static::class);
|
||||
}
|
||||
}
|
||||
32
common/Core/Resources/PaginatedResourceCollection.php
Executable file
32
common/Core/Resources/PaginatedResourceCollection.php
Executable file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Core\Resources;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
|
||||
class PaginatedResourceCollection extends AnonymousResourceCollection
|
||||
{
|
||||
/**
|
||||
* @var LengthAwarePaginator
|
||||
*/
|
||||
public $resource;
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'current_page' => $this->resource->currentPage(),
|
||||
'data' => $this->collection,
|
||||
'from' => $this->resource->firstItem(),
|
||||
'last_page' => $this->resource->lastPage(),
|
||||
'per_page' => $this->resource->perPage(),
|
||||
'to' => $this->resource->lastItem(),
|
||||
'total' => $this->total(),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user