You are here

private function SqlContentEntityStorageSchema::getTableNames in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema::getTableNames()
  2. 10 core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema::getTableNames()

Gets a list of table names for this entity type, field storage and mapping.

The default table mapping does not return dedicated revision table names for non-revisionable fields attached to revisionable entity types. Since both the storage and the storage handlers expect them to be existing, the missing table names need to be manually restored.

@todo Remove this once the behavior of the default table mapping, the storage handler, and the storage schema handler are reconciled in https://www.drupal.org/node/3113639.

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type: An entity type definition.

\Drupal\Core\Field\FieldStorageDefinitionInterface[] $field_storage_definitions: An array of field storage definitions.

\Drupal\Core\Entity\Sql\TableMappingInterface $table_mapping: A table mapping.

Return value

string[] An array of field table names.

3 calls to SqlContentEntityStorageSchema::getTableNames()
SqlContentEntityStorageSchema::onEntityTypeDelete in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php
Reacts to the deletion of the entity type.
SqlContentEntityStorageSchema::postUpdateEntityTypeSchema in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php
Allows subscribers to do any cleanup necessary after data copying.
SqlContentEntityStorageSchema::preUpdateEntityTypeSchema in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php
Allows subscribers to prepare their schema before data copying.

File

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

Class

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

Namespace

Drupal\Core\Entity\Sql

Code

private function getTableNames(EntityTypeInterface $entity_type, array $field_storage_definitions, TableMappingInterface $table_mapping) {
  $table_names = $table_mapping
    ->getTableNames();
  if ($table_mapping instanceof DefaultTableMapping && $entity_type
    ->isRevisionable()) {
    foreach ($field_storage_definitions as $storage_definition) {
      if ($table_mapping
        ->requiresDedicatedTableStorage($storage_definition)) {
        $dedicated_revision_table_name = $table_mapping
          ->getDedicatedRevisionTableName($storage_definition);
        if (!$storage_definition
          ->isRevisionable() && !in_array($dedicated_revision_table_name, $table_names)) {
          $table_names[] = $dedicated_revision_table_name;
        }
      }
    }
  }
  return $table_names;
}