getQueryFields($fieldNode) as $field) { if (!$collection->isAttributeAdded($field)) { $collection->addAttributeToSelect($field); } } } /** * Get an array of queried fields. * * @param FieldNode $fieldNode * @return string[] */ public function getQueryFields(FieldNode $fieldNode) { if (!isset($this->queryFields[$fieldNode->name->value])) { $this->queryFields[$fieldNode->name->value] = []; $query = $fieldNode->selectionSet->selections; /** @var FieldNode $field */ foreach ($query as $field) { if ($field->kind === 'InlineFragment') { continue; } $this->queryFields[$fieldNode->name->value][] = $field->name->value; } } return $this->queryFields[$fieldNode->name->value]; } }