Skip to content

Commit

Permalink
Eloquent Models & Collection 100% compatible now!
Browse files Browse the repository at this point in the history
  • Loading branch information
nilportugues committed Sep 7, 2015
1 parent 732bd9a commit 3d06daf
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/NilPortugues/Laravel5/JsonApiSerializer/JsonApiSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
*/
namespace NilPortugues\Laravel5\JsonApiSerializer;

use Illuminate\Database\Eloquent\Model;
use NilPortugues\Api\JsonApi\JsonApiTransformer;
use NilPortugues\Serializer\DeepCopySerializer;

Expand All @@ -25,4 +26,32 @@ public function __construct(JsonApiTransformer $strategy)
{
parent::__construct($strategy);
}


/**
* Extract the data from an object.
*
* @param mixed $value
*
* @return array
*/
protected function serializeObject($value)
{
if ($value instanceof \Illuminate\Database\Eloquent\Collection) {
$items = [];
foreach ($value->all() as &$v) {
$items[] = $this->serializeObject($v);
}
return [self::MAP_TYPE => 'array', self::SCALAR_VALUE => $items];
}

if (is_subclass_of($value, Model::class, true)) {
$stdClass = (object) $value->getAttributes();
$data = $this->serializeData($stdClass);
$data[self::CLASS_IDENTIFIER_KEY] = get_class($value);
return $data;
}

return parent::serializeObject($value);
}
}

0 comments on commit 3d06daf

Please sign in to comment.