interface EntityStorageSchemaInterface

Same name in other branches
  1. 9 core/lib/Drupal/Core/Entity/Schema/EntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\EntityStorageSchemaInterface
  2. 8.9.x core/lib/Drupal/Core/Entity/Schema/EntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\EntityStorageSchemaInterface
  3. 11.x core/lib/Drupal/Core/Entity/Schema/EntityStorageSchemaInterface.php \Drupal\Core\Entity\Schema\EntityStorageSchemaInterface

Defines the interface for entity storage schema handler classes.

An entity type's storage schema handler is responsible for creating the storage backend's schema that the entity type's storage handler needs for storing its entities. For example, if the storage handler is for a SQL backend, then the storage schema handler is responsible for creating the needed tables. During the application lifetime, an entity type's definition can change in a way that requires changes to the storage schema, so this interface defines methods for that as well.

Hierarchy

Expanded class hierarchy of EntityStorageSchemaInterface

All classes that implement EntityStorageSchemaInterface

See also

\Drupal\Core\Entity\EntityStorageInterface

1 file declares its use of EntityStorageSchemaInterface
EntityDefinitionUpdateManager.php in core/lib/Drupal/Core/Entity/EntityDefinitionUpdateManager.php

File

core/lib/Drupal/Core/Entity/Schema/EntityStorageSchemaInterface.php, line 21

Namespace

Drupal\Core\Entity\Schema
View source
interface EntityStorageSchemaInterface extends EntityTypeListenerInterface {
    
    /**
     * Checks if the changes to the entity type requires storage schema changes.
     *
     * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
     *   The updated entity type definition.
     * @param \Drupal\Core\Entity\EntityTypeInterface $original
     *   The original entity type definition.
     *
     * @return bool
     *   TRUE if storage schema changes are required, FALSE otherwise.
     */
    public function requiresEntityStorageSchemaChanges(EntityTypeInterface $entity_type, EntityTypeInterface $original);
    
    /**
     * 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
     * requiresEntityStorageSchemaChanges() checks. Rather, the meaning of what
     * this function returns when requiresEntityStorageSchemaChanges() returns
     * FALSE is undefined. Callers are expected to only call this function when
     * requiresEntityStorageSchemaChanges() is TRUE.
     *
     * This function can return FALSE if any of these conditions apply:
     * - There are no existing entities for the entity type.
     * - There are existing entities, but the schema changes can be applied
     *   without losing their data (e.g., if the schema changes can be performed
     *   by altering tables rather than dropping and recreating them).
     * - The only entity data that would be lost are ones that are not valid for
     *   the new definition (e.g., if changing an entity type 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.
     *
     * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
     *   The updated entity type definition.
     * @param \Drupal\Core\Entity\EntityTypeInterface $original
     *   The original entity type definition.
     *
     * @return bool
     *   TRUE if data migration is required, FALSE otherwise.
     *
     * @see self::requiresEntityStorageSchemaChanges()
     */
    public function requiresEntityDataMigration(EntityTypeInterface $entity_type, EntityTypeInterface $original);

}

Members

Title Sort descending Modifiers Object type Summary Overrides
EntityStorageSchemaInterface::requiresEntityDataMigration public function Checks if existing data would be lost if the schema changes were applied. 2
EntityStorageSchemaInterface::requiresEntityStorageSchemaChanges public function Checks if the changes to the entity type requires storage schema changes. 2

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