protected SqlContentEntityStorageSchema::deleteEntitySchemaIndexes(array $entity_schema_data, FieldStorageDefinitionInterface $storage_definition = NULL)
Deletes the specified entity schema indexes and keys.
Parameters
array $entity_schema_data: The entity schema data definition.
\Drupal\Core\Field\FieldStorageDefinitionInterface|null $storage_definition: (optional) If a field storage definition is specified, only indexes and keys involving its columns will be processed. Otherwise all defined entity indexes and keys will be processed.
File
- core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php, line 1508
Class
- SqlContentEntityStorageSchema
- Defines a schema handler that supports revisionable, translatable entities.
Namespace
Drupal\Core\Entity\Sql
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | protected function deleteEntitySchemaIndexes( array $entity_schema_data , FieldStorageDefinitionInterface $storage_definition = NULL) { $schema_handler = $this ->database->schema(); if ( $storage_definition ) { $table_mapping = $this ->storage->getTableMapping(); $column_names = $table_mapping ->getColumnNames( $storage_definition ->getName()); } $index_keys = [ 'indexes' => 'dropIndex' , 'unique keys' => 'dropUniqueKey' , ]; foreach ( $entity_schema_data as $table_name => $schema ) { foreach ( $index_keys as $key => $drop_method ) { if (! empty ( $schema [ $key ])) { foreach ( $schema [ $key ] as $name => $specifier ) { $specifier_columns = array_map ( function ( $item ) { return is_string ( $item ) ? $item : reset( $item ); }, $specifier ); if (!isset( $column_names ) || array_intersect ( $specifier_columns , $column_names )) { $schema_handler ->{ $drop_method }( $table_name , $name ); } } } } } } |
Please login to continue.