Apigility+Doctrine:如何返回分页集合


Apigility+Doctrine: how to return a paginated collection

>我已经设法安装了Apigility + Doctrine并返回单个实体(/service/x_id)和集合(/service)的结果,这是开箱即用的,无需修改。

我现在处于根据 URL 参数返回过滤结果的阶段。

我可以检索 url 参数,也可以检索过滤结果。为此,我在自己的 ResourceClass 中扩展了 fetch*() 方法。它工作正常,但此结果未分页,并且与其他响应(开箱即用的响应)的 HAL/Json 格式不同。我返回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},

这个问题的正确解决方案是什么?谢谢!

如果你想要一个带有分页的响应,你必须确保从你的fetch方法返回一个 Zend Paginator 实例。

Apigility文件中,它写如下:

扩展Zend'Paginator'Paginator 的集合类,它将允许您提供分页结果集。