function EntityStorageBase::loadMultiple
Same name in other branches
- 9 core/lib/Drupal/Core/Entity/EntityStorageBase.php \Drupal\Core\Entity\EntityStorageBase::loadMultiple()
- 8.9.x core/lib/Drupal/Core/Entity/EntityStorageBase.php \Drupal\Core\Entity\EntityStorageBase::loadMultiple()
- 10 core/lib/Drupal/Core/Entity/EntityStorageBase.php \Drupal\Core\Entity\EntityStorageBase::loadMultiple()
Overrides EntityStorageInterface::loadMultiple
11 calls to EntityStorageBase::loadMultiple()
- CommentStorage::loadThread in core/
modules/ comment/ src/ CommentStorage.php - To display threaded comments in the correct order we keep a 'thread' field and order by that value. This field keeps this data in a way which is easy to update and convenient to use.
- ConfigEntityStorage::loadMultipleOverrideFree in core/
lib/ Drupal/ Core/ Config/ Entity/ ConfigEntityStorage.php - Loads one or more entities in their original form without overrides.
- EntityStorageBase::load in core/
lib/ Drupal/ Core/ Entity/ EntityStorageBase.php - Loads one entity.
- EntityStorageBase::loadByProperties in core/
lib/ Drupal/ Core/ Entity/ EntityStorageBase.php - Load entities by their property values without any access checks.
- FieldConfigStorage::loadByProperties in core/
modules/ field/ src/ FieldConfigStorage.php - Load entities by their property values without any access checks.
1 method overrides EntityStorageBase::loadMultiple()
- ContentEntityNullStorage::loadMultiple in core/
lib/ Drupal/ Core/ Entity/ ContentEntityNullStorage.php - Loads one or more entities.
File
-
core/
lib/ Drupal/ Core/ Entity/ EntityStorageBase.php, line 269
Class
- EntityStorageBase
- A base entity storage class.
Namespace
Drupal\Core\EntityCode
public function loadMultiple(?array $ids = NULL) {
$entities = [];
$preloaded_entities = [];
// Create a new variable which is either a prepared version of the $ids
// array for later comparison with the entity cache, or FALSE if no $ids
// were passed. The $ids array is reduced as items are loaded from cache,
// and we need to know if it is empty for this reason to avoid querying the
// database when all requested entities are loaded from cache.
$flipped_ids = $ids ? array_flip($ids) : FALSE;
// Try to load entities from the static cache, if the entity type supports
// static caching.
if ($ids) {
$entities += $this->getFromStaticCache($ids);
// If any entities were loaded, remove them from the IDs still to load.
$ids = array_keys(array_diff_key($flipped_ids, $entities));
}
// Try to gather any remaining entities from a 'preload' method. This method
// can invoke a hook to be used by modules that need, for example, to swap
// the default revision of an entity with a different one. Even though the
// base entity storage class does not actually invoke any preload hooks, we
// need to call the method here so we can add the pre-loaded entity objects
// to the static cache below. If all the entities were fetched from the
// static cache, skip this step.
if ($ids === NULL || $ids) {
$preloaded_entities = $this->preLoad($ids);
}
if (!empty($preloaded_entities)) {
$entities += $preloaded_entities;
// If any entities were pre-loaded, remove them from the IDs still to
// load.
$ids = array_keys(array_diff_key($flipped_ids, $entities));
// Add pre-loaded entities to the cache.
$this->setStaticCache($preloaded_entities);
}
// Load any remaining entities from the database. This is the case if $ids
// is set to NULL (so we load all entities) or if there are any IDs left to
// load.
if ($ids === NULL || $ids) {
$queried_entities = $this->doLoadMultiple($ids);
}
// Pass all entities loaded from the database through $this->postLoad(),
// which attaches fields (if supported by the entity type) and calls the
// entity type specific load callback, for example hook_node_load().
if (!empty($queried_entities)) {
$this->postLoad($queried_entities);
$entities += $queried_entities;
// Add queried entities to the cache.
$this->setStaticCache($queried_entities);
}
// Ensure that the returned array is ordered the same as the original
// $ids array if this was passed in and remove any invalid IDs.
if ($flipped_ids) {
// Remove any invalid IDs from the array and preserve the order passed in.
$flipped_ids = array_intersect_key($flipped_ids, $entities);
$entities = array_replace($flipped_ids, $entities);
}
return $entities;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.