为什么默认分页响应和雄辩的分页资源的JSON结构不同?

时间:2019-02-16 10:47:09

标签: laravel laravel-5

我正在开发一个API,对于索引路由,我返回分页,但是现在我应该使用雄辩的资源,但是这两个的分页JSON结构是不同的,并且前端代码不再起作用。

我的代码是:

// AdminUserController.php
public function index()
{
    return User::paginate();
}

// ClientUserController.php
public function index()
{
     return new UserCollection(User::paginate());
}

第一个JSON结构,如:

{
  "total": 50,
  "per_page": 15,
  "current_page": 1,
  "last_page": 4,
  "next_page_url": "http://my.app/api/admin/users?page=2",
  "prev_page_url": null,
  "from": 1,
  "to": 15,
  "data": [
    {
      // Result Object
    },
    {
      // Result Object
    }
  ]
}

但是第二个就像:

{
    "data": [
        {
            // Result Object
        },
        {
            // Result Object
        }
    ],
    "links":{
        "first": "http://my.app/api/app/users?page=1",
        "last": "http://my.app/api/app/users?page=2",
        "prev": null,
        "next": null
    },
    "meta":{
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "path": "http://my.app/api/admin/users",
        "per_page": 15,
        "to": 15,
        "total": 25
    }
}

为什么laravel分页响应具有不同的JSON结构?

1 个答案:

答案 0 :(得分:0)

您的UserCollection类是什么样的?

乍一看,这是因为第一种方法AdminUserController@index将响应转换为JSON,而第二种方法ClientUserController @index返回了集合。