You are here

public function EntityStorageBase::delete in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Entity/EntityStorageBase.php \Drupal\Core\Entity\EntityStorageBase::delete()

Deletes permanently saved entities.

Parameters

array $entities: An array of entity objects to delete.

Throws

\Drupal\Core\Entity\EntityStorageException In case of failures, an exception is thrown.

Overrides EntityStorageInterface::delete

1 call to EntityStorageBase::delete()
SqlContentEntityStorage::delete in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
Deletes permanently saved entities.
2 methods override EntityStorageBase::delete()
ContentEntityNullStorage::delete in core/lib/Drupal/Core/Entity/ContentEntityNullStorage.php
Deletes permanently saved entities.
SqlContentEntityStorage::delete in core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
Deletes permanently saved entities.

File

core/lib/Drupal/Core/Entity/EntityStorageBase.php, line 348
Contains \Drupal\Core\Entity\EntityStorageBase.

Class

EntityStorageBase
A base entity storage class.

Namespace

Drupal\Core\Entity

Code

public function delete(array $entities) {
  if (!$entities) {

    // If no entities were passed, do nothing.
    return;
  }

  // Ensure that the entities are keyed by ID.
  $keyed_entities = [];
  foreach ($entities as $entity) {
    $keyed_entities[$entity
      ->id()] = $entity;
  }

  // Allow code to run before deleting.
  $entity_class = $this->entityClass;
  $entity_class::preDelete($this, $keyed_entities);
  foreach ($keyed_entities as $entity) {
    $this
      ->invokeHook('predelete', $entity);
  }

  // Perform the delete and reset the static cache for the deleted entities.
  $this
    ->doDelete($keyed_entities);
  $this
    ->resetCache(array_keys($keyed_entities));

  // Allow code to run after deleting.
  $entity_class::postDelete($this, $keyed_entities);
  foreach ($keyed_entities as $entity) {
    $this
      ->invokeHook('delete', $entity);
  }
}