/**
  * Filters the item to keep only association related fields
  *
  * @param array $item
  *
  * @return array
  */
 protected function filter(array $item)
 {
     $expectedFields = [$this->attrColumnsResolver->resolveIdentifierField(), 'associations'];
     foreach (array_keys($item) as $fieldName) {
         if (!in_array($fieldName, $expectedFields)) {
             unset($item[$fieldName]);
         }
     }
     return $item;
 }
Пример #2
0
 /**
  * @param array $item
  *
  * @throws StructureArrayConversionException
  */
 protected function validateOptionalFields(array $item)
 {
     $optionalFields = array_merge(['family', 'enabled', 'categories', 'groups'], $this->attrColumnsResolver->resolveAttributeColumns(), $this->getOptionalAssociationFields());
     // index $optionalFields by keys to improve performances
     $optionalFields = array_combine($optionalFields, $optionalFields);
     $unknownFields = [];
     foreach (array_keys($item) as $field) {
         if (!isset($optionalFields[$field])) {
             $unknownFields[] = $field;
         }
     }
     if (0 < count($unknownFields)) {
         $message = count($unknownFields) > 1 ? 'The fields "%s" do not exist' : 'The field "%s" does not exist';
         throw new StructureArrayConversionException(sprintf($message, implode(', ', $unknownFields)));
     }
 }