laravel分页数据如何格式化?

如果用框架中的paginate()方法进行分页,那么数据外层会多包上一层分页数据,例如:

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

如何将分页数据独立开来显示?例如:

"data":[
    {
        // Result Object
    },
    {
        // Result Object
    }
],
"page":    {
    "total": 50,
    "per_page": 15,
    "current_page": 1,
    "last_page": 4,
    "next_page_url": "http://laravel.app?page=2",
    "prev_page_url": null,
    "from": 1,
    "to": 15
}
阅读 6k
4 个回答

我是自己包装了一下,简化一下输出,如下面:

function paginate($pagination) {
   return [
        'status' => true,
        'message' => '',
        'data' => [
            'items' => $pagination->items(),
            'next' => $pagination->hasMorePages() ? $pagination->currentPage() + 1 : null,
            'total' => $pagination->total(),
        ],
    ];
}
// 获取包裹的 data
$data = $list->getCollection();
dump($data);

// 将包裹的 data 置空
$list->setCollection(collect());
dump($list);

虽然以上代码能够实现你想要的,但是我并不推荐你这样做。

遍历paginate返回的数据,把需求的数据单独放到data数组里,分页数据可以

[
'total' => $favorites->total(),
'per_page' => $favorites->perPage(),
'current_page' => $favorites->currentPage(),
'last_page' => $favorites->lastPage()
]

取到

返回客户端之前把laravel的返回值手动处理一遍,但是这个过程不太【优雅】,看看能不能和前端沟通一下,解决一下你的需求?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题