diff --git a/core/lib/Drupal/Core/Config/ConfigManager.php b/core/lib/Drupal/Core/Config/ConfigManager.php index faa58c8..ad9f268 100644 --- a/core/lib/Drupal/Core/Config/ConfigManager.php +++ b/core/lib/Drupal/Core/Config/ConfigManager.php @@ -331,11 +331,13 @@ public function getConfigEntitiesToChangeOnDependencyRemoval($type, array $names } } // Now that we've fixed all the possible dependencies the remaining need to - // be deleted. - $return['delete'] = $dependents; + // be deleted. Reverse the array so that entities are removed in the correct + // order of dependence. For example, this ensures that fields are removed + // before field storages. + $return['delete'] = array_reverse($dependents); $delete_uuids = array_map(function($dependent) { return $dependent->uuid(); - }, $dependents); + }, $return['delete']); // Use the lists of UUIDs to filter the original list to work out which // configuration entities are unchanged. $return['unchanged'] = array_filter($original_dependencies, function ($dependent) use ($delete_uuids, $update_uuids) {