public EntityStorageBase::loadMultiple(array $ids = NULL)
Loads one or more entities.
Parameters
$ids: An array of entity IDs, or NULL to load all entities.
Return value
\Drupal\Core\Entity\EntityInterface[] An array of entity objects indexed by their IDs. Returns an empty array if no matching entities are found.
Overrides EntityStorageInterface::loadMultiple
File
- core/lib/Drupal/Core/Entity/EntityStorageBase.php, line 219
Class
- EntityStorageBase
- A base entity storage class.
Namespace
Drupal\Core\Entity
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | public function loadMultiple( array $ids = NULL) { $entities = array (); // 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's empty for this reason to avoid querying the // database when all requested entities are loaded from cache. $passed_ids = ! empty ( $ids ) ? array_flip ( $ids ) : FALSE; // Try to load entities from the static cache, if the entity type supports // static caching. if ( $this ->entityType->isStaticallyCacheable() && $ids ) { $entities += $this ->getFromStaticCache( $ids ); // If any entities were loaded, remove them from the ids still to load. if ( $passed_ids ) { $ids = array_keys ( array_diff_key ( $passed_ids , $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 ; } if ( $this ->entityType->isStaticallyCacheable()) { // Add entities to the cache. if (! empty ( $queried_entities )) { $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 ( $passed_ids ) { // Remove any invalid ids from the array. $passed_ids = array_intersect_key ( $passed_ids , $entities ); foreach ( $entities as $entity ) { $passed_ids [ $entity ->id()] = $entity ; } $entities = $passed_ids ; } return $entities ; } |
Please login to continue.