Example #1
0
 /**
  * Разрешает и возвращает список выбираемых полей.
  * @param ICollection $collection коллекция
  * @param IField[] $fields уточняющий список полей
  * @param IObjectType[] $types уточняющий список типов
  * @return IField[]
  */
 protected function resolveSelectiveFields(ICollection $collection, array $fields, array $types)
 {
     if (!count($fields)) {
         foreach ($types as $type) {
             $fields = array_merge($fields, $type->getFields());
         }
         if (!count($fields)) {
             $fields = $collection->getMetadata()->getFields();
         }
     }
     foreach ($fields as $fieldName => $field) {
         if ($field instanceof IRelationField && !$field instanceof BelongsToRelationField) {
             unset($fields[$fieldName]);
         }
     }
     return array_merge($collection->getForcedFieldsToLoad(), $fields);
 }