You are here

public function EntityUsage::listTargets in Entity Usage 8.3

Same name and namespace in other branches
  1. 8.4 src/EntityUsage.php \Drupal\entity_usage\EntityUsage::listTargets()
  2. 8.2 src/EntityUsage.php \Drupal\entity_usage\EntityUsage::listTargets()

Provide a list of all referenced target entities for a source entity.

Parameters

\Drupal\Core\Entity\EntityInterface $source_entity: The source entity to check for references.

Return value

array An associative array where keys are target entity types, and values are indexed arrays of target entity IDs.

Overrides EntityUsageInterface::listTargets

File

src/EntityUsage.php, line 265

Class

EntityUsage
Defines the entity usage base class.

Namespace

Drupal\entity_usage

Code

public function listTargets(EntityInterface $source_entity) {

  // Entities can have string IDs. We support that by using different columns
  // on each case.
  $source_id_column = $this
    ->isInt($source_entity
    ->id()) ? 'source_id' : 'source_id_string';
  $result = $this->connection
    ->select($this->tableName, 'e')
    ->fields('e', [
    'target_id',
    'target_id_string',
    'target_type',
  ])
    ->condition($source_id_column, $source_entity
    ->id())
    ->condition('source_type', $source_entity
    ->getEntityTypeId())
    ->orderBy('target_id', 'DESC')
    ->execute();
  $references = [];
  foreach ($result as $usage) {
    $target_id_value = !empty($usage->target_id) ? $usage->target_id : $usage->target_id_string;
    $references[$usage->target_type][] = $target_id_value;
  }
  return $references;
}