You are here

protected function ContentEntityStorageBase::preLoad in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php \Drupal\Core\Entity\ContentEntityStorageBase::preLoad()

Gathers entities from a 'preload' step.

Parameters

array|null &$ids: If not empty, return entities that match these IDs. IDs that were found will be removed from the list.

Return value

\Drupal\Core\Entity\EntityInterface[] Associative array of entities, keyed by the entity ID.

Overrides EntityStorageBase::preLoad

1 call to ContentEntityStorageBase::preLoad()
ContentEntityStorageBase::loadUnchanged in core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
Loads an unchanged entity from the database.

File

core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php, line 506

Class

ContentEntityStorageBase
Base class for content entity storage handlers.

Namespace

Drupal\Core\Entity

Code

protected function preLoad(array &$ids = NULL) {
  $entities = [];

  // Call hook_entity_preload().
  $preload_ids = $ids ?: [];
  $preload_entities = $this
    ->moduleHandler()
    ->invokeAll('entity_preload', [
    $preload_ids,
    $this->entityTypeId,
  ]);
  foreach ((array) $preload_entities as $entity) {
    $entities[$entity
      ->id()] = $entity;
  }
  if ($entities) {

    // If any entities were pre-loaded, remove them from the IDs still to
    // load.
    if ($ids !== NULL) {
      $ids = array_keys(array_diff_key(array_flip($ids), $entities));
    }
    else {
      $result = $this
        ->getQuery()
        ->accessCheck(FALSE)
        ->condition($this->entityType
        ->getKey('id'), array_keys($entities), 'NOT IN')
        ->execute();
      $ids = array_values($result);
    }
  }
  return $entities;
}