You are here

public function EntityQueryEntities::resolveValues in GraphQL 8.3

Retrieve the list of field values.

Always returns a list of field values. Even for single value fields. Single/multi field handling is responsibility of the base class.

Parameters

mixed $value: The current object value.

array $args: Field arguments.

$context: The resolve context.

\GraphQL\Type\Definition\ResolveInfo $info: The resolve info object.

Return value

\Generator The value generator.

Overrides FieldPluginBase::resolveValues

File

modules/graphql_core/src/Plugin/GraphQL/Fields/EntityQuery/EntityQueryEntities.php, line 106

Class

EntityQueryEntities
Retrieve the entity result set of an entity query.

Namespace

Drupal\graphql_core\Plugin\GraphQL\Fields\EntityQuery

Code

public function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
  if ($value instanceof QueryInterface) {
    $type = $value
      ->getEntityTypeId();
    $result = $value
      ->execute();
    $metadata = $value
      ->getMetaData('graphql_context');
    if (isset($metadata['ids']) && ($sorting = $metadata['ids'])) {
      $sorting = array_flip(array_values($sorting));
      uasort($result, function ($a, $b) use ($sorting) {
        return $sorting[$a] - $sorting[$b];
      });
    }
    if ($value
      ->hasTag('revisions')) {

      // If this is a revision query, the version ids are the array keys.
      return $this
        ->resolveFromRevisionIds($type, array_keys($result), $metadata, $args, $context, $info);
    }
    return $this
      ->resolveFromEntityIds($type, array_values($result), $metadata, $args, $context, $info);
  }
}