diff --git a/api/app/Http/Transformers/EloquentModelTransformer.php b/api/app/Http/Transformers/EloquentModelTransformer.php index 1bda72fb..1a0917ed 100644 --- a/api/app/Http/Transformers/EloquentModelTransformer.php +++ b/api/app/Http/Transformers/EloquentModelTransformer.php @@ -42,6 +42,13 @@ public function transform($object) throw new \InvalidArgumentException('must be array or '.Arrayable::class.' instead got '.gettype($object)); } + if (($object instanceof BaseModel)) { + $castTypes = $object['casts']; + foreach ($array as $key => $value) { + $array[$key] = $this->castAttribute($castTypes, $key, $value); + } + } + foreach ($array as $key => $value) { // Handle snakecase conversion in sub arrays @@ -58,11 +65,6 @@ public function transform($object) } if (($object instanceof BaseModel)) { - $castTypes = $object['casts']; - foreach ($array as $key => $value) { - $array[$key] = $this->castAttribute($castTypes, $key, $value); - } - $this->addSelfKey($object, $array); } diff --git a/api/app/Models/BaseModel.php b/api/app/Models/BaseModel.php index 6ae6a2d9..82ee5e3a 100644 --- a/api/app/Models/BaseModel.php +++ b/api/app/Models/BaseModel.php @@ -71,6 +71,10 @@ protected function castAttribute($key, $value) // Run the parent cast rules in the parent method $value = parent::castAttribute($key, $value); + if(is_null($value)) { + return $value; + } + switch ($this->getCastType($key)) { case 'date': return Carbon::createFromFormat('Y-m-d', $value); diff --git a/api/app/Models/TestEntity.php b/api/app/Models/TestEntity.php index 0b0299b7..4b727608 100644 --- a/api/app/Models/TestEntity.php +++ b/api/app/Models/TestEntity.php @@ -39,8 +39,8 @@ class TestEntity extends BaseModel protected $casts = [ 'decimal' => 'float', 'date' => 'date', - 'created_at' => 'dateTime', - 'updated_at' => 'dateTime', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', ]; protected $validationRules = [