diff --git a/src/Unstable/ResourceResponseFactory.php b/src/Unstable/ResourceResponseFactory.php index 1e9bde2..53cc436 100644 --- a/src/Unstable/ResourceResponseFactory.php +++ b/src/Unstable/ResourceResponseFactory.php @@ -14,6 +14,7 @@ use Drupal\jsonapi\JsonApiResource\ResourceObject; use Drupal\jsonapi\JsonApiResource\ResourceObjectData; use Drupal\jsonapi\ResourceResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; /** * Creates JSON:API response objects. @@ -99,9 +100,20 @@ final class ResourceResponseFactory { */ private function getIncludes(Request $request, $data): IncludedData { assert($data instanceof ResourceObject || $data instanceof ResourceObjectData); - return $request->query->has('include') && ($include_parameter = $request->query->get('include')) && !empty($include_parameter) - ? $this->includeResolver->resolve($data, $include_parameter) - : new NullIncludedData(); + $includes = new NullIncludedData(); + if ($request->query->has('include') && ($include_parameter = $request->query->get('include')) && !empty($include_parameter)) { + foreach ($data->getData() as $entity) { + foreach (explode(',', $include_parameter) as $include) { + try { + $includes = IncludedData::merge($includes, $this->includeResolver->resolve($entity, $include)); + } + catch (BadRequestHttpException $exception) { + continue; + } + } + } + } + return IncludedData::deduplicate($includes); } }