Skip to content

Commit

Permalink
fix handling of null relationships
Browse files Browse the repository at this point in the history
  • Loading branch information
Mads Møller committed Sep 4, 2018
1 parent 89df829 commit 17dfde3
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/Transformers/ApiTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function transformOutput($data): array
protected function transformAttributes(array $output, array $data): array
{
foreach ($data as $key => $value) {
if (true === $this->strict && false === array_key_exists($key, $this->apiMapping)) {
if (true === $this->strict && !$this->isMapped($key)) {
continue;
}

Expand All @@ -113,9 +113,12 @@ protected function transformRelationships(array $output, Model $data): array
/** @var Model $data */
$relationships = $data->getRelations();
foreach ($relationships as $relationshipName => $relationship) {
if (true === $relationship instanceof Collection) {
if (null === $relationship) {
$output[$relationshipName] = $this->isMapped($relationshipName) ? $this->convertValueType($relationshipName, null) : null;
}
else if (true === $relationship instanceof Collection) {
// do not transform empty relationships
if($relationship->isEmpty()) {
if ($relationship->isEmpty()) {
continue;
}

Expand All @@ -124,7 +127,8 @@ protected function transformRelationships(array $output, Model $data): array
} else {
$output[$relationshipName] = $relationship->toArray();
}
} else {
}
else {
// model
if ($this->isTransformAware($relationship)) {
$output[$relationshipName] = $relationship->getTransformer()->transformOutput($relationship);
Expand Down Expand Up @@ -336,4 +340,14 @@ protected function isTransformAware($model): bool
{
return array_key_exists(TransformerAware::class, class_uses($model));
}

/**
* Check if key is mapped with apiMapping
* @param $key
* @return bool
*/
protected function isMapped($key): bool
{
return true === array_key_exists($key, $this->apiMapping);
}
}

0 comments on commit 17dfde3

Please sign in to comment.