You are here

public function CiviEntityStorage::onFieldStorageDefinitionDelete in CiviCRM Entity 8.3

Reacts to the deletion of a field storage definition.

Parameters

\Drupal\Core\Field\FieldStorageDefinitionInterface $storage_definition: The field being deleted.

Overrides SqlContentEntityStorage::onFieldStorageDefinitionDelete

File

src/CiviEntityStorage.php, line 353

Class

CiviEntityStorage
Defines entity class for external CiviCRM entities.

Namespace

Drupal\civicrm_entity

Code

public function onFieldStorageDefinitionDelete(FieldStorageDefinitionInterface $storage_definition) {
  $table_mapping = $this
    ->getTableMapping($this
    ->getEntityFieldManager()
    ->getActiveFieldStorageDefinitions($this->entityType
    ->id()));
  if ($storage_definition instanceof FieldStorageConfigInterface && $table_mapping
    ->requiresDedicatedTableStorage($storage_definition)) {

    // Mark all data associated with the field for deletion.
    $table = $table_mapping
      ->getDedicatedDataTableName($storage_definition);
    $this->database
      ->update($table)
      ->fields([
      'deleted' => 1,
    ])
      ->execute();
  }

  // Update the field schema.
  $this
    ->wrapSchemaException(function () use ($storage_definition) {
    $this
      ->getStorageSchema()
      ->onFieldStorageDefinitionDelete($storage_definition);
  });
}