SqlContentEntityStorageSchema::hasColumnChanges

protected SqlContentEntityStorageSchema::hasColumnChanges(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original)

Compares schemas to check for changes in the column definitions.

Parameters

\Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition: Current field storage definition.

\Drupal\Core\Field\FieldStorageDefinitionInterface $original: The original field storage definition.

Return value

bool Returns TRUE if there are schema changes in the column definitions.

File

core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php, line 1946

Class

SqlContentEntityStorageSchema
Defines a schema handler that supports revisionable, translatable entities.

Namespace

Drupal\Core\Entity\Sql

Code

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;
}
doc_Drupal
2016-10-29 09:43:40
Comments
Leave a Comment

Please login to continue.