Apigility+Doctrine:如何 return 分页集合
Apigility+Doctrine: how to return a paginated collection
我已经成功地安装了 Apigility + Doctrine 和 return 单个实体 (/service/x_id) 和集合 (/service) 的结果,这是开箱即用的,无需修改。
我现在正处于 return 根据 URL 参数过滤结果的阶段。
我可以检索 url 参数,我可以检索过滤后的结果。为此,我在自己的 ResourceClass 中扩展了 fetch*() 方法。它工作正常,但此结果未分页,并且与其他响应(开箱即用的响应)不采用相同的 HAL / Json 格式。我正在 returning getEntityManager('my.em.name')->getRepository(my.repo.name)->findBy($params)
的结果,它实际上看起来像这样:
{
"_links":
{
"self":
{
"href": "http://api.local/service?startcode=7531"
}
},
"_embedded":
{
"objektprojectstart":
[
{
"oid": 14427,
"opsId": 3760,
"startcode": "7531",
"tid": 44798,
"_links":
{
"self":
{
"href": "http://studoraapi.local/service/3760"
}
}
},
{... more},
这个问题的正确解决方法是什么?谢谢!
如果你想要一个带有分页的响应,你必须确保你 return 来自你的 fetch
方法的 Zend Paginator
实例。
在Apigility文档here中是这样写的:
A Collection class which extends Zend\Paginator\Paginator
, which will allow you to provide paginated result sets.
我已经成功地安装了 Apigility + Doctrine 和 return 单个实体 (/service/x_id) 和集合 (/service) 的结果,这是开箱即用的,无需修改。
我现在正处于 return 根据 URL 参数过滤结果的阶段。
我可以检索 url 参数,我可以检索过滤后的结果。为此,我在自己的 ResourceClass 中扩展了 fetch*() 方法。它工作正常,但此结果未分页,并且与其他响应(开箱即用的响应)不采用相同的 HAL / Json 格式。我正在 returning getEntityManager('my.em.name')->getRepository(my.repo.name)->findBy($params)
的结果,它实际上看起来像这样:
{
"_links":
{
"self":
{
"href": "http://api.local/service?startcode=7531"
}
},
"_embedded":
{
"objektprojectstart":
[
{
"oid": 14427,
"opsId": 3760,
"startcode": "7531",
"tid": 44798,
"_links":
{
"self":
{
"href": "http://studoraapi.local/service/3760"
}
}
},
{... more},
这个问题的正确解决方法是什么?谢谢!
如果你想要一个带有分页的响应,你必须确保你 return 来自你的 fetch
方法的 Zend Paginator
实例。
在Apigility文档here中是这样写的:
A Collection class which extends
Zend\Paginator\Paginator
, which will allow you to provide paginated result sets.