You are here

protected function CiviEntityStorage::doDeleteFieldItems in CiviCRM Entity 8.3

Deletes entity field values from the storage.

Parameters

\Drupal\Core\Entity\ContentEntityInterface[] $entities: An array of entity objects to be deleted.

Overrides SqlContentEntityStorage::doDeleteFieldItems

2 calls to CiviEntityStorage::doDeleteFieldItems()
CiviEntityStorage::civiPostDelete in src/CiviEntityStorage.php
Allows CiviCRM hook to invoke delete.
CiviEntityStorage::doDelete in src/CiviEntityStorage.php
Performs storage-specific entity deletion.

File

src/CiviEntityStorage.php, line 112

Class

CiviEntityStorage
Defines entity class for external CiviCRM entities.

Namespace

Drupal\civicrm_entity

Code

protected function doDeleteFieldItems($entities) {
  $table_mapping = $this
    ->getTableMapping();
  foreach ($entities as $entity) {
    foreach ($this
      ->getEntityFieldManager()
      ->getFieldDefinitions($entity
      ->getEntityTypeId(), $entity
      ->bundle()) as $field_definition) {
      $storage_definition = $field_definition
        ->getFieldStorageDefinition();
      if (!$table_mapping
        ->requiresDedicatedTableStorage($storage_definition)) {
        continue;
      }
      $table_name = $table_mapping
        ->getDedicatedDataTableName($storage_definition);
      $this->database
        ->delete($table_name)
        ->condition('entity_id', $entity
        ->id())
        ->execute();
    }
  }
}