protected function ViewsConfigUpdater::getMultivalueBaseFieldUpdateTableInfo in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/src/ViewsConfigUpdater.php \Drupal\views\ViewsConfigUpdater::getMultivalueBaseFieldUpdateTableInfo()
Returns the multivalue base fields update table info.
Return value
array An array of multivalue base field info.
2 calls to ViewsConfigUpdater::getMultivalueBaseFieldUpdateTableInfo()
- ViewsConfigUpdater::needsMultivalueBaseFieldUpdate in core/
modules/ views/ src/ ViewsConfigUpdater.php - Update field names for multi-value base fields.
- ViewsConfigUpdater::processMultivalueBaseFieldHandler in core/
modules/ views/ src/ ViewsConfigUpdater.php - Processes handlers affected by the multivalue base field update.
File
- core/
modules/ views/ src/ ViewsConfigUpdater.php, line 343
Class
- ViewsConfigUpdater
- Provides a BC layer for modules providing old configurations.
Namespace
Drupal\viewsCode
protected function getMultivalueBaseFieldUpdateTableInfo() {
$table_info =& $this->multivalueBaseFieldsUpdateTableInfo;
if (!isset($table_info)) {
$table_info = [];
foreach ($this->entityTypeManager
->getDefinitions() as $entity_type_id => $entity_type) {
if ($entity_type
->hasHandlerClass('views_data') && $entity_type
->entityClassImplements(FieldableEntityInterface::class)) {
$base_field_definitions = $this->entityFieldManager
->getBaseFieldDefinitions($entity_type_id);
$entity_storage = $this->entityTypeManager
->getStorage($entity_type_id);
$table_mapping = $entity_storage
->getTableMapping($base_field_definitions);
if (!$table_mapping instanceof DefaultTableMapping) {
continue;
}
foreach ($base_field_definitions as $field_name => $base_field_definition) {
$base_field_storage_definition = $base_field_definition
->getFieldStorageDefinition();
// Skip single value and custom storage base fields.
if (!$base_field_storage_definition
->isMultiple() || $base_field_storage_definition
->hasCustomStorage()) {
continue;
}
// Get the actual table, as well as the column for the main property
// name, so we can perform an update on the views in
// ::updateFieldNamesForMultivalueBaseFields().
$table_name = $table_mapping
->getFieldTableName($field_name);
$main_property_name = $base_field_storage_definition
->getMainPropertyName();
$table_info[$table_name][$field_name] = $table_mapping
->getFieldColumnName($base_field_storage_definition, $main_property_name);
}
}
}
}
return $table_info;
}