/** * @param Model|Model[] $models * @param Context $context * @param null $resourceDefinition * @return array|\mixed[] */ protected function modelsToResources($models, Context $context, $resourceDefinition = null) { if (ArrayHelper::isIterable($models)) { return $this->toResources($models, $context, $resourceDefinition)->toArray(); } elseif ($models instanceof Model) { return $this->toResource($models, $context, $resourceDefinition)->toArray(); } else { return $models; } }
/** * @param ResourceDefinition|string $resourceDefinition * @param mixed $entities * @param ContextContract $context * @param RelationshipValue $parent * @param null $parentEntity * @return ResourceCollection * @throws InvalidContextAction * @throws InvalidEntityException */ public function toResources($resourceDefinition, $entities, ContextContract $context, RelationshipValue $parent = null, $parentEntity = null) : ResourceCollection { if (!ArrayHelper::isIterable($entities)) { throw new InvalidEntityException(__CLASS__ . '::toResources expects an iterable object of entities.'); } $resourceDefinition = ResourceDefinitionLibrary::make($resourceDefinition); $out = new ResourceCollection(); foreach ($entities as $entity) { $out->add($this->toResource($resourceDefinition, $entity, $context, $parent, $parentEntity)); } $context->getProcessors()->processCollection($this, $out, $resourceDefinition, $context, $parent, $parentEntity); return $out; }
/** * @param SelectQueryParameters $query * @param mixed[] * @return mixed[] * @throws InvalidArgumentException */ public function processResults(SelectQueryParameters $query, $results) { if (!ArrayHelper::isIterable($results)) { throw new InvalidArgumentException("Results should be iterable."); } if ($query->isReverse()) { $results = ArrayHelper::reverse($results); } // Set the first and the last values if (count($results) > 0) { $this->setFirst($results[0]); $this->setLast($results[count($results) - 1]); } return $results; }