public function serialize(Resource $resource, array $includesCollections = []) { $data = ['data' => $resource->serialize()]; if (count($includesCollections) > 0) { $data['included'] = []; } foreach ($includesCollections as $includesCollection) { foreach ($includesCollection->serialize() as $row) { $data['included'][] = $row; } } return $data; }
public function collect(Resource $resource) { $serializer = $resource->getSerializer(); $collections = new ProcessingCollections($serializer->getName(), $this->registry->resolveNestedSerializers($serializer)); // Load direct children of the resource into collections if ($resource instanceof ResourceCollection) { foreach ($resource as $item) { $collections->process($serializer, $item); } } else { $collections->process($serializer, $resource->unwrap()); } $collections->processNested(); return $collections->toResourceCollections(); }
function it_serializes_an_included_resource_under_the_included_namespace(Resource $resource, Resource $includedResource) { $resource->serialize()->willReturn(['id' => 1, 'name' => 'test']); $includedResource->serialize()->willReturn([['id' => 2, 'name' => 'test_2']]); $this->serialize($resource, [$includedResource])->shouldReturn(['data' => ['id' => 1, 'name' => 'test'], 'included' => [['id' => 2, 'name' => 'test_2']]]); }