function DynamicallyFieldableEntityStorageSchemaInterface::requiresFieldDataMigration

Same name in other branches
  1. 9 core/lib/Drupal/Core/Entity/Schema/DynamicallyFieldableEntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\DynamicallyFieldableEntityStorageSchemaInterface::requiresFieldDataMigration()
  2. 10 core/lib/Drupal/Core/Entity/Schema/DynamicallyFieldableEntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\DynamicallyFieldableEntityStorageSchemaInterface::requiresFieldDataMigration()
  3. 11.x core/lib/Drupal/Core/Entity/Schema/DynamicallyFieldableEntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\DynamicallyFieldableEntityStorageSchemaInterface::requiresFieldDataMigration()

Checks if existing data would be lost if the schema changes were applied.

If there are no schema changes needed, then no data needs to be migrated, but it is not the responsibility of this function to recheck what requiresFieldStorageSchemaChanges() checks. Rather, the meaning of what this function returns when requiresFieldStorageSchemaChanges() returns FALSE is undefined. Callers are expected to only call this function when requiresFieldStorageSchemaChanges() is TRUE.

This function can return FALSE if any of these conditions apply:

  • There are no existing entities for the entity type to which this field is attached.
  • There are existing entities, but none with existing values for this field.
  • There are existing field values, but the schema changes can be applied without losing them (e.g., if the schema changes can be performed by altering tables rather than dropping and recreating them).
  • The only field values that would be lost are ones that are not valid for the new definition (e.g., if changing a field from revisionable to non-revisionable, then it's okay to drop data for the non-default revision).

When this function returns FALSE, site administrators will be unable to perform an automated update, and will instead need to perform a site migration or invoke some custom update process.

Parameters

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

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

Return value

bool TRUE if data migration is required, FALSE otherwise.

See also

self::requiresFieldStorageSchemaChanges()

2 methods override DynamicallyFieldableEntityStorageSchemaInterface::requiresFieldDataMigration()
SqlContentEntityStorage::requiresFieldDataMigration in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
Checks if existing data would be lost if the schema changes were applied.
SqlContentEntityStorageSchema::requiresFieldDataMigration in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php
Checks if existing data would be lost if the schema changes were applied.

File

core/lib/Drupal/Core/Entity/Schema/DynamicallyFieldableEntityStorageSchemaInterface.php, line 69

Class

DynamicallyFieldableEntityStorageSchemaInterface
A storage schema that supports entity types with dynamic field definitions.

Namespace

Drupal\Core\Entity\Schema

Code

public function requiresFieldDataMigration(FieldStorageDefinitionInterface $storage_definition, FieldStorageDefinitionInterface $original);

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.