diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php index cf7446cd0a0..585a8fdf994 100644 --- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php +++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php @@ -193,8 +193,8 @@ abstract class QueryBase implements QueryInterface { * {@inheritdoc} */ public function range($start = NULL, $length = NULL) { - $this->range = [ - 'start' => $start, + $this->range = is_null($start) && is_null($length) ? [] : [ + 'start' => $start ?? 0, 'length' => $length, ]; return $this; diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php index 18ee774338a..c0a0172a8f5 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php @@ -499,6 +499,40 @@ class ConfigEntityQueryTest extends KernelTestBase { ->execute(); $this->assertSame(['1', '2', '3'], array_values($this->queryResults)); + // Omit optional parameters for the range and sort. + $this->queryResults = $this->entityStorage->getQuery() + ->range() + ->sort('id') + ->execute(); + $this->assertSame(['1', '2', '3', '4', '5', '6', '7'], array_values($this->queryResults)); + + // Explicitly pass NULL for the range and sort. + $this->queryResults = $this->entityStorage->getQuery() + ->range(NULL, NULL) + ->sort('id') + ->execute(); + $this->assertSame(['1', '2', '3', '4', '5', '6', '7'], array_values($this->queryResults)); + + // Omit the optional start parameter for the range. + $this->queryResults = $this->entityStorage->getQuery() + ->range(NULL, 1) + ->sort('id') + ->execute(); + $this->assertSame(['1'], array_values($this->queryResults)); + + // Omit the optional length parameter for the range. + $this->queryResults = $this->entityStorage->getQuery() + ->range(4) + ->sort('id') + ->execute(); + $this->assertSame(['5', '6', '7'], array_values($this->queryResults)); + + // Request an empty range. + $this->queryResults = $this->entityStorage->getQuery() + ->range(0, 0) + ->execute(); + $this->assertEmpty($this->queryResults); + // Apply a pager with limit 4. $this->queryResults = $this->entityStorage->getQuery() ->pager('4', 0)