Skip to content

Commit 5a30c27

Browse files
committed
SearchFilter: allow on dates
1 parent 8b02b2b commit 5a30c27

File tree

4 files changed

+15
-0
lines changed

4 files changed

+15
-0
lines changed

features/doctrine/search_filter.feature

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,3 +1039,11 @@ Feature: Search filter on collections
10391039
}
10401040
}
10411041
"""
1042+
1043+
@createSchema
1044+
Scenario: Search by date (#4128)
1045+
Given there are 3 dummydate objects with dummyDate
1046+
When I send a "GET" request to "/dummy_dates?dummyDate=2015-04-01"
1047+
Then the response status code should be 200
1048+
And the response should be in JSON
1049+
And the JSON node "hydra:totalItems" should be equal to 1

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuild
162162
{
163163
if (\func_num_args() > 7 && ($metadata = func_get_arg(7)) instanceof ClassMetadata) {
164164
$type = $metadata->getTypeOfField($field);
165+
if ($type && DBALType::getTypeRegistry()->has($type)) {
166+
$type = null;
167+
}
165168
} else {
166169
@trigger_error(sprintf('Method %s() will have a 8th argument `$metadata` in version API Platform 3.0.', __FUNCTION__), \E_USER_DEPRECATED);
167170
$type = null;

tests/Fixtures/TestBundle/Document/DummyDate.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use ApiPlatform\Core\Annotation\ApiFilter;
1717
use ApiPlatform\Core\Annotation\ApiResource;
1818
use ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter\DateFilter;
19+
use ApiPlatform\Core\Bridge\Doctrine\MongoDbOdm\Filter\SearchFilter;
1920
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
2021

2122
/**
@@ -27,6 +28,7 @@
2728
* @ApiResource(attributes={
2829
* "filters"={"my_dummy_date.mongodb.date"}
2930
* })
31+
* @ApiFilter(SearchFilter::class, properties={"dummyDate"})
3032
* @ApiFilter(DateFilter::class, properties={
3133
* "dateIncludeNullAfter"=DateFilter::INCLUDE_NULL_AFTER,
3234
* "dateIncludeNullBefore"=DateFilter::INCLUDE_NULL_BEFORE,

tests/Fixtures/TestBundle/Entity/DummyDate.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use ApiPlatform\Core\Annotation\ApiFilter;
1717
use ApiPlatform\Core\Annotation\ApiResource;
1818
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
19+
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
1920
use Doctrine\ORM\Mapping as ORM;
2021

2122
/**
@@ -26,6 +27,7 @@
2627
* @ApiResource(attributes={
2728
* "filters"={"my_dummy_date.date"}
2829
* })
30+
* @ApiFilter(SearchFilter::class, properties={"dummyDate"})
2931
* @ApiFilter(DateFilter::class, properties={
3032
* "dateIncludeNullAfter"=DateFilter::INCLUDE_NULL_AFTER,
3133
* "dateIncludeNullBefore"=DateFilter::INCLUDE_NULL_BEFORE,

0 commit comments

Comments
 (0)