API Platform: DateFilter reference
In a nutshell
API Platform provides a DateFilter
class that lets you filter your API resources by date intervals.
The syntax is:
?property[<after|before|strictly_after|strictly_before>]=value
The value
can be any date format supported by the DateTime
constructor. See this page for more info on support date formats.
The after
and before
filters will include the value
whereas strictly_after
and strictly_before
will exclude the value
.
Example usage
Enable the filter
<?php
// api/src/Entity/Offer.php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
#[ApiResource]
#[ApiFilter(DateFilter::class, properties: ['createdAt'])]
class Offer
{
// ...
}
Use the filter
GET /offers?createdAt[after]=2018-03-19
This will return all the offers where the createdAt
is greater than or equal to 2018-03-19
Filter by exact date
By default, the DateFilter
class doesn’t seem to provide a way to filter by an exact date. To filter by an exact date such as 2021-07-12
, I set the [after]
to that date and the [before]
to one day after the target date (2021-07-13
in this case). So something like this:
GET /offers?createdAt[after]=2021-07-12&createdAt[before]=2021-07-13
Handle null
values
The DateFilter
can be configured to treat null in a number of ways. See the docs for more info.
Sources
Thanks for your comment 🙏. Once it's approved, it will appear here.
Leave a comment