/** * Modify an entity. * * @param BaseModel $entity * @return BaseModel */ private function modifyEntity(BaseModel $entity) { if ($this->showOnly) { $attributes = $entity->getAttributes(); $newHidden = array_diff(array_keys($attributes), $this->showOnly); $entity->setHidden($newHidden); } if ($this->makeVisible) { $hidden = $entity->getHidden(); $newHidden = array_diff($hidden, $this->makeVisible); $entity->setHidden($newHidden); } if ($this->hide) { $hidden = $entity->getHidden(); $newHidden = array_merge($hidden, $this->hide); $entity->setHidden($newHidden); } if ($this->customizations) { foreach ($this->customizations as $key => $value) { $entity->{$key} = $value; } } if (!empty($this->appends)) { foreach ($this->appends as $appendKey => $appendValue) { $entity->{$appendKey} = $appendValue; } } return $entity; }
/** * Get the objects nested entities transformed. * @param $object * @param $array * @return mixed */ private function nestRelations(BaseModel $object, $array) { /** @var BaseModel $object */ if (count($object['relations']) > 0) { foreach ($object['relations'] as $relation => $childModelOrCollection) { if (in_array($relation, $object->getHidden())) { continue; } /** @var TransformerInterface $transformer */ $transformer = $this->getTransformerForNested($relation); $childTransformed = null; if ($childModelOrCollection instanceof Collection) { $childTransformed = $transformer->transformCollection($childModelOrCollection, $this->options); } else { $childTransformed = $transformer->transformItem($childModelOrCollection, $this->options); } $array = $array + ['_' . $relation => $childTransformed]; unset($array[$relation]); } } return $array; }