如何使用 API 平台中的日期过滤器在两个日期之间进行过滤

xze*_*nce 2 api api-platform.com symfony4

我将 API Platform 与 Symfony 4 一起使用,并尝试使用日期过滤器,如下所述: https: //api-platform.com/docs/core/filters/

当我使用这样的过滤器时....something?_page=1&lieferdat[after]=2018-12-01&lieferdat[before]=2018-12-30

Hydra 响应显示括号是 url 编码的,我认为它无法正常工作,因为我得到的是所有结果而不是过滤后的结果。在我的实体中,我添加了 DateFilter 作为任何其他过滤器,这似乎是正确的。

Hydra 响应:“某事?lieferdat%5Bafter%5D=2018-12-01&lieferdat%5Bbefore%5D=2018-12-30&_page=1”

任何人都可以解释一下我是否可以在请求中使用括号或更好:任何人都可以为 Api 平台提供一个有效的日期过滤器实现,演示如何在两个日期之间进行过滤吗?

感谢您的建议,最诚挚的问候

xze*_*nce 5

好吧,我正在回答我自己的问题.. 我的问题的答案:这些 url 编码的括号是否被 symfony api 平台识别?答案是:是的

在对 Postman 进行了一些尝试和错误之后,我成功了。

当我命令我的查询反转时:

反而

something?lieferdat[after]=2019-03-01&lieferdat[before]=2019-03-31
Run Code Online (Sandbox Code Playgroud)

我把它颠倒过来了

something?lieferdat[before]=2019-03-31&lieferdat[after]=2019-03-01
Run Code Online (Sandbox Code Playgroud)

这有效!

唯一的问题是,有时如果我指定一个月,我有时会得到前一个月的 1-2 个值,这不是我想要的并且让我感到困惑。我尝试使用

?lieferdat[strictly_before]=2019-03-31&lieferdat[strictly_after]=2019-03-01
Run Code Online (Sandbox Code Playgroud)

但这并没有带来效果。

Edit2:好吧,答案很简单,在我的实体中,我定义了搜索过滤器,但我没有定义此过滤器起作用的属性,因此它适用于该实体中的所有日期属性

仍然感谢任何帮助:)