public function EntityReferenceFieldItemList::referencedEntities

public EntityReferenceFieldItemList::referencedEntities()

Gets the entities referenced by this field, preserving field item deltas.

Return value

\Drupal\Core\Entity\EntityInterface[] An array of entity objects keyed by field item deltas.

Overrides EntityReferenceFieldItemListInterface::referencedEntities

File

core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php, line 26

Class

EntityReferenceFieldItemList
Defines a item list class for entity reference fields.

Namespace

Drupal\Core\Field

Code

public function referencedEntities() {
  if (empty($this->list)) {
    return array();
  }

  // Collect the IDs of existing entities to load, and directly grab the
  // "autocreate" entities that are already populated in $item->entity.
  $target_entities = $ids = array();
  foreach ($this->list as $delta => $item) {
    if ($item->target_id !== NULL) {
      $ids[$delta] = $item->target_id;
    }
    elseif ($item->hasNewEntity()) {
      $target_entities[$delta] = $item->entity;
    }
  }

  // Load and add the existing entities.
  if ($ids) {
    $target_type = $this->getFieldDefinition()->getSetting('target_type');
    $entities = \Drupal::entityManager()->getStorage($target_type)->loadMultiple($ids);
    foreach ($ids as $delta => $target_id) {
      if (isset($entities[$target_id])) {
        $target_entities[$delta] = $entities[$target_id];
      }
    }
    // Ensure the returned array is ordered by deltas.
    ksort($target_entities);
  }

  return $target_entities;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Field!EntityReferenceFieldItemList.php/function/EntityReferenceFieldItemList::referencedEntities/8.1.x