Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AttributesJoiner.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
10 use GraphQL\Language\AST\FieldNode;
12 
17 {
21  private $queryFields = [];
22 
30  public function join(FieldNode $fieldNode, AbstractCollection $collection) : void
31  {
32  foreach ($this->getQueryFields($fieldNode) as $field) {
33  if (!$collection->isAttributeAdded($field)) {
34  $collection->addAttributeToSelect($field);
35  }
36  }
37  }
38 
45  public function getQueryFields(FieldNode $fieldNode)
46  {
47  if (!isset($this->queryFields[$fieldNode->name->value])) {
48  $this->queryFields[$fieldNode->name->value] = [];
49  $query = $fieldNode->selectionSet->selections;
51  foreach ($query as $field) {
52  if ($field->kind === 'InlineFragment') {
53  continue;
54  }
55  $this->queryFields[$fieldNode->name->value][] = $field->name->value;
56  }
57  }
58 
59  return $this->queryFields[$fieldNode->name->value];
60  }
61 }
join(FieldNode $fieldNode, AbstractCollection $collection)