You are here

public function EntityFieldManager::getFieldMapByFieldType in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/EntityFieldManager.php \Drupal\Core\Entity\EntityFieldManager::getFieldMapByFieldType()

Gets a lightweight map of fields across bundles filtered by field type.

Parameters

string $field_type: The field type to filter by.

Return value

array An array keyed by entity type. Each value is an array which keys are field names and value is an array with two entries:

  • type: The field type.
  • bundles: An associative array of the bundles in which the field appears, where the keys and values are both the bundle's machine name.

Overrides EntityFieldManagerInterface::getFieldMapByFieldType

File

core/lib/Drupal/Core/Entity/EntityFieldManager.php, line 540

Class

EntityFieldManager
Manages the discovery of entity fields.

Namespace

Drupal\Core\Entity

Code

public function getFieldMapByFieldType($field_type) {
  if (!isset($this->fieldMapByFieldType[$field_type])) {
    $filtered_map = [];
    $map = $this
      ->getFieldMap();
    foreach ($map as $entity_type => $fields) {
      foreach ($fields as $field_name => $field_info) {
        if ($field_info['type'] == $field_type) {
          $filtered_map[$entity_type][$field_name] = $field_info;
        }
      }
    }
    $this->fieldMapByFieldType[$field_type] = $filtered_map;
  }
  return $this->fieldMapByFieldType[$field_type];
}