Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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;
 }