【问题标题】:Remote pagination and last_page: filter during, or after, database query?远程分页和 last_page:在数据库查询期间或之后过滤?
【发布时间】:2020-12-02 01:01:55
【问题描述】:

我想使用 Tabulator 的远程分页从我的数据库表中加载记录,一次一页。我希望我应该能够使用 Tabulator 发送到我的远程后端的页面和大小参数来确定从数据库中选择哪些记录。 例如,page=2 和 size=10,我可以使用 MySQL 的 LIMIT 10,20 来选择要在第 2 页显示的记录(如果 size 设置为 10)。

但是,这样做使我无法使用所有记录的计数来确定表中的页数。对返回的记录进行计数只会产生 10 条记录,即使总共有 500 条记录(例如),所以只会显示一个分页按钮(而不是预期的 50 个按钮)。

因此,为了在 Tabulator 中“正确”进行远程分页,似乎我必须进行查询以计算数据库中的所有记录(没有限制),然后进行计数以确定 last_page,然后执行类似的操作PHP 的 array_slice 提取第 n 页的记录价值作为数据集返回。或者我可以执行 2 个数据库查询:计算所有记录以确定页数,然后执行 LIMIT [start],[end] 查询。
这是正确的吗?

【问题讨论】:

    标签: tabulator


    【解决方案1】:

    Tabulator 需要知道最后一个页码,以便在表格页脚中布局分页按钮,以便用户可以从页面列表中选择他们想要查看的页面。

    您只需要执行一个查询来计算记录总数并将其除以请求中传递的页面大小数。您可以非常有效地运行计数查询,只返回计数而不返回数据。

    然后,您可以运行标准查询,并对记录设置限制以检索该页面的记录。

    如果你想进一步优化,你可以将计数值保存在缓存中,这样你就不需要在每次请求时生成它。

    【讨论】:

    • 知道了,谢谢,关于缓存计数的要点。
    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2015-08-03
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多