Implements \Drupal\Core\Entity\Query\QueryInterface::execute().
Overrides QueryInterface::execute
public function execute() {
// Load all config files.
$entity_info = $this->entityManager
->getDefinition($this
->getEntityType());
$prefix = $entity_info['config_prefix'];
$prefix_length = strlen($prefix) + 1;
$names = $this->configStorage
->listAll($prefix);
$configs = array();
foreach ($names as $name) {
$configs[substr($name, $prefix_length)] = config($name)
->get();
}
$result = $this->condition
->compile($configs);
// Apply sort settings.
foreach ($this->sort as $sort) {
$direction = $sort['direction'] == 'ASC' ? -1 : 1;
$field = $sort['field'];
uasort($result, function ($a, $b) use ($field, $direction) {
return $a[$field] <= $b[$field] ? $direction : -$direction;
});
}
// Let the pager do its work.
$this
->initializePager();
if ($this->range) {
$result = array_slice($result, $this->range['start'], $this->range['length'], TRUE);
}
if ($this->count) {
return count($result);
}
// Create the expected structure of entity_id => entity_id. Config
// entities have string entity IDs.
foreach ($result as $key => &$value) {
$value = (string) $key;
}
return $result;
}