Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Http\Resources\Json;use Countable;use Illuminate\Http\Resources\CollectsResources;use Illuminate\Pagination\AbstractCursorPaginator;use Illuminate\Pagination\AbstractPaginator;use IteratorAggregate;class ResourceCollection extends JsonResource implements Countable, IteratorAggregate{use CollectsResources;/*** The resource that this resource collects.** @var string*/public $collects;/*** The mapped collection instance.** @var \Illuminate\Support\Collection*/public $collection;/*** Indicates if all existing request query parameters should be added to pagination links.** @var bool*/protected $preserveAllQueryParameters = false;/*** The query parameters that should be added to the pagination links.** @var array|null*/protected $queryParameters;/*** Create a new resource instance.** @param mixed $resource* @return void*/public function __construct($resource){parent::__construct($resource);$this->resource = $this->collectResource($resource);}/*** Indicate that all current query parameters should be appended to pagination links.** @return $this*/public function preserveQuery(){$this->preserveAllQueryParameters = true;return $this;}/*** Specify the query string parameters that should be present on pagination links.** @param array $query* @return $this*/public function withQuery(array $query){$this->preserveAllQueryParameters = false;$this->queryParameters = $query;return $this;}/*** Return the count of items in the resource collection.** @return int*/public function count(): int{return $this->collection->count();}/*** Transform the resource into a JSON array.** @param \Illuminate\Http\Request $request* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable*/public function toArray($request){return $this->collection->map->toArray($request)->all();}/*** Create an HTTP response that represents the object.** @param \Illuminate\Http\Request $request* @return \Illuminate\Http\JsonResponse*/public function toResponse($request){if ($this->resource instanceof AbstractPaginator || $this->resource instanceof AbstractCursorPaginator) {return $this->preparePaginatedResponse($request);}return parent::toResponse($request);}/*** Create a paginate-aware HTTP response.** @param \Illuminate\Http\Request $request* @return \Illuminate\Http\JsonResponse*/protected function preparePaginatedResponse($request){if ($this->preserveAllQueryParameters) {$this->resource->appends($request->query());} elseif (! is_null($this->queryParameters)) {$this->resource->appends($this->queryParameters);}return (new PaginatedResourceResponse($this))->toResponse($request);}}