使用了集合中的分页,排序。resource返回数据格式错误
1. 运行环境
apache windows .
1). 当前使用的 Laravel 版本?
laravel:6.0.4
//: <> (使用 php artisan --version
命令查看)
2). 当前使用的 php/php-fpm 版本?
PHP 版本:7.3.4
php-fpm 版本:
3). 当前系统
window10
//: <> (期待数值 Windows 10 / Ubuntu 20.4 / CentOS 8 )
4). 业务环境
5). 相关软件版本
2. 问题描述?
使用了laravel集合,原本返回数据是正常格式,加了一个排序后返回的数据格式不对。
3. 您期望得到的结果?
如3图数据格式并data中的数据实现排序
//: <> (能截图就截图。)
可以参考一下我的
在 Laravel 中,使用 orderBy 方法对查询结果进行排序时,调用顺序需要考虑到排序操作的实际需求,通常需要在 paginateFilter 方法之前进行排序操作。
这是因为 paginateFilter 方法在对查询结果进行分页和过滤时,会对查询语句进行修改,以适应分页和过滤的需求。如果在 paginateFilter 方法之后再进行排序操作,可能会导致排序结果不符合预期,因为 paginateFilter 方法已经对查询语句进行了修改。
例如,以下代码展示了一个正确的 orderBy 方法的调用示例:
在这个例子中,首先对 User 模型进行了查询并使用 where 和 orWhere 方法对查询条件进行了筛选,接着使用 orderBy 方法对查询结果进行了排序,然后使用 paginateFilter 方法对查询结果进行了分页和过滤,并传入了分页参数,最后使用 get 方法获取查询结果。
需要注意的是,如果排序操作需要在分页和过滤操作之后进行,可以考虑使用 sort 方法对集合进行排序,而不是在查询构建器中使用 orderBy 方法。
Resource 会根据 数据源是否实现了 AbstractPaginator 接口,返回不同的响应数据, sortBy后,数据源的类型已经变了
问题已经解决,写了两个方法,一种是db数据库,先排序再分页。可以实现。但是并没有用到集合就很鸡肋,后又请教了大佬写出了集合。经过测试发现排序在第一页是正常的,第二页是有的时间会比第一页的时间还要大,结果没有排在第一页。索性这里我就不用集合来写了。代码我贴出来,大家可以参考并回答下为什么第二页的时间会比第一页的时间还要大却在第二页没有在第一页。谢谢
~你这个应该是返回的结果类变了。
可以这样: