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.