protected function SqlContentEntityStorageSchema::hasColumnChanges in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema::hasColumnChanges()
- 10 core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema::hasColumnChanges()
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.
2 calls to SqlContentEntityStorageSchema::hasColumnChanges()
- SqlContentEntityStorageSchema::updateDedicatedTableSchema in core/
lib/ Drupal/ Core/ Entity/ Sql/ SqlContentEntityStorageSchema.php - Updates the schema for a field stored in a shared table.
- SqlContentEntityStorageSchema::updateSharedTableSchema in core/
lib/ Drupal/ Core/ Entity/ Sql/ SqlContentEntityStorageSchema.php - Updates the schema for a field stored in a shared table.
File
- core/
lib/ Drupal/ Core/ Entity/ Sql/ SqlContentEntityStorageSchema.php, line 2466
Class
- SqlContentEntityStorageSchema
- Defines a schema handler that supports revisionable, translatable entities.
Namespace
Drupal\Core\Entity\SqlCode
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;
}