如何制作laravel分页组件?

如何制作laravel分页组件?,laravel,laravel-pagination,Laravel,Laravel Pagination,我有一个带后退和前进按钮的滑块组件,我想以分页的方式获取数据,我该怎么做? 我只想在不使用Vue.js或livewire的情况下执行此操作,而只使用laravel、js和JQuery。首先,为什么要使用slider创建分页?有更好的方法,如延迟加载、筛选器列和简单分页。我想延迟加载对性能最好 如果您坚持创建一个滑块组件,只是想知道,您有多少数据?以及要检索多少数据以进行筛选?想象一下,您的数据库中有超过1.000.000行,您肯定不想查询所有行以实时更新屏幕。为什么我要告诉你‘全部询问’ 让我告

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

首先,为什么要使用slider创建分页?有更好的方法,如延迟加载、筛选器列和简单分页。我想延迟加载对性能最好

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

让我告诉您,如果您使用laravel默认分页(使用限制和偏移量)进行分页,则其背后的流程如下所示:

SELECT
    *
FROM
    payments
WHERE
  Id < 50
ORDER BY Id DESC
LIMIT 20
  • DB将选择您拥有的所有行
  • DB将根据limit参数限制您的行
  • DB将逐个扫描行以匹配所需的偏移量
  • DB将检索您想要的数据
  • 在这个流程中,这就是为什么如果您有大量数据,分页(限制和偏移)就不够好的原因。解决方案是将分页逻辑从限制和偏移更改为如下查询(案例:自动增量id):

    对于降序法,您可以这样查询:

    SELECT
        *
    FROM
        payments
    WHERE
      Id < 50
    ORDER BY Id DESC
    LIMIT 20
    
    选择
    *
    从…起
    付款
    哪里
    Id<50
    按Id描述订购
    限制20
    

    然后在laravel中,发送包含分页数据的json。所以,在javascript中,您只需将分页数据与库或您自己的分页逻辑对齐即可。

    首先,为什么要使用滑块创建分页?有更好的方法,如延迟加载、筛选器列和简单分页。我想延迟加载对性能最好

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

    让我告诉您,如果您使用laravel默认分页(使用限制和偏移量)进行分页,则其背后的流程如下所示:

    SELECT
        *
    FROM
        payments
    WHERE
      Id < 50
    ORDER BY Id DESC
    LIMIT 20
    
  • DB将选择您拥有的所有行
  • DB将根据limit参数限制您的行
  • DB将逐个扫描行以匹配所需的偏移量
  • DB将检索您想要的数据
  • 在这个流程中,这就是为什么如果您有大量数据,分页(限制和偏移)就不够好的原因。解决方案是将分页逻辑从限制和偏移更改为如下查询(案例:自动增量id):

    对于降序法,您可以这样查询:

    SELECT
        *
    FROM
        payments
    WHERE
      Id < 50
    ORDER BY Id DESC
    LIMIT 20
    
    选择
    *
    从…起
    付款
    哪里
    Id<50
    按Id描述订购
    限制20
    

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

    Laravel的查询生成器提供了一个
    paginate
    方法,该方法为您提供了一个
    lengshawarepaginator
    。通常,您会在刀片视图中使用
    $items->links()
    呈现此内容,但您可以将其结果转换为JSON()。这样,您就可以按自己喜欢的方式在JavaScript中使用结果。

    Laravel的查询生成器提供了一个
    paginate
    方法,该方法为您提供了一个
    LengthAwarePaginator
    。通常,您会在刀片视图中使用
    $items->links()
    呈现此内容,但您可以将其结果转换为JSON()。这样,您就可以按照自己喜欢的方式在JavaScript中使用结果