Skip to content

Commit dd2d49e

Browse files
authored
Merge pull request #1928 from Simperfit/feature/add-always-include-null
feature: add a way to always include null in the date filter
2 parents e3d50ff + 28bbbae commit dd2d49e

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/Bridge/Doctrine/Orm/Filter/DateFilter.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class DateFilter extends AbstractContextAwareFilter
3333
const EXCLUDE_NULL = 'exclude_null';
3434
const INCLUDE_NULL_BEFORE = 'include_null_before';
3535
const INCLUDE_NULL_AFTER = 'include_null_after';
36+
const INCLUDE_NULL_BEFORE_AND_AFTER = 'include_null_before_and_after';
3637
const DOCTRINE_DATE_TYPES = [
3738
'date' => true,
3839
'datetime' => true,
@@ -189,8 +190,9 @@ protected function addWhere(QueryBuilder $queryBuilder, QueryNameGeneratorInterf
189190
if (null === $nullManagement || self::EXCLUDE_NULL === $nullManagement) {
190191
$queryBuilder->andWhere($baseWhere);
191192
} elseif (
192-
(\in_array($operator, [self::PARAMETER_BEFORE, self::PARAMETER_STRICTLY_BEFORE], true) && self::INCLUDE_NULL_BEFORE === $nullManagement) ||
193-
(\in_array($operator, [self::PARAMETER_AFTER, self::PARAMETER_STRICTLY_AFTER], true) && self::INCLUDE_NULL_AFTER === $nullManagement)
193+
(self::INCLUDE_NULL_BEFORE === $nullManagement && \in_array($operator, [self::PARAMETER_BEFORE, self::PARAMETER_STRICTLY_BEFORE], true)) ||
194+
(self::INCLUDE_NULL_AFTER === $nullManagement && \in_array($operator, [self::PARAMETER_AFTER, self::PARAMETER_STRICTLY_AFTER], true)) ||
195+
(self::INCLUDE_NULL_BEFORE_AND_AFTER === $nullManagement && \in_array($operator, [self::PARAMETER_AFTER, self::PARAMETER_STRICTLY_AFTER, self::PARAMETER_BEFORE, self::PARAMETER_STRICTLY_BEFORE], true))
194196
) {
195197
$queryBuilder->andWhere($queryBuilder->expr()->orX(
196198
$baseWhere,

tests/Bridge/Doctrine/Orm/Filter/DateFilterTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,17 @@ public function provideApplyTestData(): array
294294
],
295295
sprintf('SELECT o FROM %s o WHERE o.dummyDate >= :dummyDate_p1 OR o.dummyDate IS NULL', Dummy::class),
296296
],
297+
'include null before and after (include_null_before_and_after)' => [
298+
[
299+
'dummyDate' => 'include_null_before_and_after',
300+
],
301+
[
302+
'dummyDate' => [
303+
'after' => '2015-04-05',
304+
],
305+
],
306+
sprintf('SELECT o FROM %s o WHERE o.dummyDate >= :dummyDate_p1 OR o.dummyDate IS NULL', Dummy::class),
307+
],
297308
'bad date format' => [
298309
[
299310
'dummyDate' => null,

0 commit comments

Comments
 (0)