Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function DrupalDefaultEntityController::load

Implements DrupalEntityControllerInterface::load().

Parameters

$ids: An array of entity IDs, or FALSE to load all entities.

$conditions: An array of conditions. Keys are field names on the entity's base table. Values will be compared for equality. All the comparisons will be ANDed together. This parameter is deprecated; use an EntityFieldQuery instead.

Return value

An array of entity objects indexed by their ids. When no results are found, an empty array is returned.

Overrides DrupalEntityControllerInterface::load

File

includes/entity.inc, line 157

Class

DrupalDefaultEntityController
Default implementation of DrupalEntityControllerInterface.

Code

public function load($ids = array(), $conditions = array()) {
 $entities = array();
 // Revisions are not statically cached, and require a different query to
 // other conditions, so separate the revision id into its own variable.
 if ($this->revisionKey  && isset($conditions[$this->revisionKey ])) {
 $revision_id = $conditions[$this->revisionKey ];
 unset($conditions[$this->revisionKey ]);
 }
 else {
 $revision_id = FALSE;
 }
 // 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->cache  && !$revision_id) {
 $entities += $this->cacheGet ($ids, $conditions);
 // 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));
 }
 }
 // Ensure integer entity IDs are valid.
 if (!empty($ids)) {
 $this->cleanIds ($ids);
 }
 // Load any remaining entities from the database. This is the case if $ids
 // is set to FALSE (so we load all entities), if there are any ids left to
 // load, if loading a revision, or if $conditions was passed without $ids.
 if ($ids === FALSE || $ids || $revision_id || $conditions && !$passed_ids) {
 // Build the query.
 $query = $this->buildQuery ($ids, $conditions, $revision_id);
 $queried_entities = $query->execute ()
 ->fetchAllAssoc ($this->idKey );
 }
 // Pass all entities loaded from the database through $this->attachLoad(),
 // 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->attachLoad ($queried_entities, $revision_id);
 $entities += $queried_entities;
 }
 if ($this->cache ) {
 // Add entities to the cache if we are not loading a revision.
 if (!empty($queried_entities) && !$revision_id) {
 $this->cacheSet ($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->{$this->idKey }] = $entity;
 }
 $entities = $passed_ids;
 }
 return $entities;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.