/** * Compares schemas to check for changes in the column definitions. * * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition * Current field storage definition. * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $original * The original field storage definition. * * @return bool * Returns TRUE if there are schema changes in the column definitions. */ protected function hasColumnChanges(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original) { if ($storage_definition->getColumns() != $original->getColumns()) { // Base field definitions have schema data stored in the original // definition. return TRUE; } if (!$storage_definition->hasCustomStorage()) { $keys = array_flip($this->getColumnSchemaRelevantKeys()); $definition_schema = $this->getSchemaFromStorageDefinition($storage_definition); foreach ($this->loadFieldSchemaData($original) as $table => $table_schema) { foreach ($table_schema['fields'] as $name => $spec) { $definition_spec = array_intersect_key($definition_schema[$table]['fields'][$name], $keys); $stored_spec = array_intersect_key($spec, $keys); if ($definition_spec != $stored_spec) { return TRUE; } } } } return FALSE; }
/** * Compares schemas to check for changes in the column definitions. * * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition * Current field storage definition. * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $original * The original field storage definition. * * @return bool * Returns TRUE if there are schema changes in the column definitions. */ protected function hasColumnChanges(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original) { if ($storage_definition->getColumns() != $original->getColumns()) { // Base field definitions have schema data stored in the original // definition. return TRUE; } if (!$storage_definition->hasCustomStorage()) { $schema = $this->getSchemaFromStorageDefinition($storage_definition); foreach ($this->loadFieldSchemaData($original) as $table => $spec) { if ($spec['fields'] != $schema[$table]['fields']) { return TRUE; } } } return FALSE; }