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