【发布时间】:2021-04-04 17:46:33
【问题描述】:
我有一个带有后退和前进按钮的滑块组件,我想以分页方式获取数据,我该怎么做? 我只想在不使用 Vue.js 或 livewire 的情况下仅使用 laravel 、 JS 和 JQuery 来做到这一点。
【问题讨论】:
标签: laravel laravel-pagination
我有一个带有后退和前进按钮的滑块组件,我想以分页方式获取数据,我该怎么做? 我只想在不使用 Vue.js 或 livewire 的情况下仅使用 laravel 、 JS 和 JQuery 来做到这一点。
【问题讨论】:
标签: laravel laravel-pagination
Laravel 的查询构建器提供了一个 paginate 方法,它为您提供了一个 LengthAwarePaginator。通常,您可以使用 $items->links() 在刀片视图中呈现它,但您可以将其结果转换为 JSON (https://laravel.com/docs/8.x/pagination#converting-results-to-json)。这样您就可以在 JavaScript 中以任何您喜欢的方式使用结果。
【讨论】:
首先,为什么要使用滑块来创建分页?有更好的方法,如延迟加载、过滤列和简单分页。我猜延迟加载最适合性能。
如果你坚持要创建一个滑块组件,只是想知道,你有多少数据?以及您要检索多少数据来筛选?想象一下,您的数据库中有超过 1.000.000 行,您肯定不想查询所有行以实时更新屏幕。为什么我告诉你“全部查询”?
我告诉你,如果你使用laravel默认分页(使用limit和offset)进行分页,这背后的流程是这样的:
使用这种流程,如果您有大量数据,这就是为什么分页(限制和偏移)不够好的原因。解决方案是将分页逻辑从限制和偏移更改为这样的查询(案例:自动增量 id):
SELECT
*
FROM
payments
WHERE
Id > 15
LIMIT 20
或者对于降序的方法,你可以这样查询:
SELECT
*
FROM
payments
WHERE
Id < 50
ORDER BY Id DESC
LIMIT 20
然后在 laravel 中,发送一个包含分页数据的 json。因此,在 javascript 中,您只需将分页数据与库或您自己的分页逻辑对齐。
【讨论】: