/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetContext $context */ if ($context->hasResult()) { // data already retrieved return; } $query = $context->getQuery(); if (!$query instanceof QueryBuilder) { // unsupported query return; } $config = $context->getConfig(); if (null === $config) { // an entity configuration does not exist return; } $result = $this->entitySerializer->serialize($query, $config); if (empty($result)) { $result = null; } elseif (count($result) === 1) { $result = reset($result); } else { throw new \RuntimeException('The result must have one or zero items.'); } $context->setResult($result); // data returned by the EntitySerializer are already normalized $context->skipGroup('normalize_data'); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasResult()) { // data already retrieved return; } $query = $context->getQuery(); if (!$query instanceof QueryBuilder) { // unsupported query return; } $config = $context->getConfig(); if (null === $config) { // an entity configuration does not exist return; } $context->setResult($this->entitySerializer->serialize($query, $config)); // data returned by the EntitySerializer are already normalized $context->skipGroup('normalize_data'); }
/** * Serializes the list of entities * * @param QueryBuilder $qb A query builder is used to get data * * @return array */ public function serialize(QueryBuilder $qb) { return $this->entitySerializer->serialize($qb, $this->getCachedSerializationConfig()); }