public function Query::execute in Drupal 9
Same name in this branch
- 9 core/lib/Drupal/Core/Database/Query/Query.php \Drupal\Core\Database\Query\Query::execute()
- 9 core/lib/Drupal/Core/Config/Entity/Query/Query.php \Drupal\Core\Config\Entity\Query\Query::execute()
- 9 core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query::execute()
- 9 core/lib/Drupal/Core/Entity/Query/Sql/Query.php \Drupal\Core\Entity\Query\Sql\Query::execute()
- 9 core/lib/Drupal/Core/Entity/Query/Null/Query.php \Drupal\Core\Entity\Query\Null\Query::execute()
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Entity/KeyValueStore/Query/Query.php \Drupal\Core\Entity\KeyValueStore\Query\Query::execute()
Execute the query.
Return value
int|array Returns an integer for count queries or an array of ids. The values of the array are always entity ids. The keys will be revision ids if the entity supports revision and entity ids if not.
Overrides QueryInterface::execute
File
- core/
lib/ Drupal/ Core/ Entity/ KeyValueStore/ Query/ Query.php, line 42
Class
- Query
- Defines the entity query for entities stored in a key value backend.
Namespace
Drupal\Core\Entity\KeyValueStore\QueryCode
public function execute() {
// Load the relevant records.
$records = $this->keyValueFactory
->get('entity_storage__' . $this->entityTypeId)
->getAll();
// Apply conditions.
$result = $this->condition
->compile($records);
// 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.
$entity_ids = array_keys($result);
return array_combine($entity_ids, $entity_ids);
}