【问题标题】:how make a laravel pagination component?如何制作 laravel 分页组件?
【发布时间】:2021-04-04 17:46:33
【问题描述】:

我有一个带有后退和前进按钮的滑块组件,我想以分页方式获取数据,我该怎么做? 我只想在不使用 Vue.js 或 livewire 的情况下仅使用 laravel 、 JS 和 JQuery 来做到这一点。

【问题讨论】:

    标签: laravel laravel-pagination


    【解决方案1】:

    Laravel 的查询构建器提供了一个 paginate 方法,它为您提供了一个 LengthAwarePaginator。通常,您可以使用 $items->links() 在刀片视图中呈现它,但您可以将其结果转换为 JSON (https://laravel.com/docs/8.x/pagination#converting-results-to-json)。这样您就可以在 JavaScript 中以任何您喜欢的方式使用结果。

    【讨论】:

      【解决方案2】:

      首先,为什么要使用滑块来创建分页?有更好的方法,如延迟加载、过滤列和简单分页。我猜延迟加载最适合性能。

      如果你坚持要创建一个滑块组件,只是想知道,你有多少数据?以及您要检索多少数据来筛选?想象一下,您的数据库中有超过 1.000.000 行,您肯定不想查询所有行以实时更新屏幕。为什么我告诉你“全部查询”?

      我告诉你,如果你使用laravel默认分页(使用limit和offset)进行分页,这背后的流程是这样的:

      1. DB 将选择您拥有的所有行
      2. DB 将根据限制参数限制您的行
      3. DB 将逐一扫描行以匹配您想要的偏移量
      4. DB 将检索您想要的数据

      使用这种流程,如果您有大量数据,这就是为什么分页(限制和偏移)不够好的原因。解决方案是将分页逻辑从限制和偏移更改为这样的查询(案例:自动增量 id):

      SELECT
          *
      FROM
          payments
      WHERE
        Id > 15
      LIMIT 20
      

      或者对于降序的方法,你可以这样查询:

      SELECT
          *
      FROM
          payments
      WHERE
        Id < 50
      ORDER BY Id DESC
      LIMIT 20
      

      然后在 laravel 中,发送一个包含分页数据的 json。因此,在 javascript 中,您只需将分页数据与库或您自己的分页逻辑对齐。

      【讨论】:

        猜你喜欢
        • 2017-03-20
        • 2018-08-01
        • 1970-01-01
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多