【问题标题】:Paginate does not account for changing results分页不考虑结果的变化
【发布时间】:2019-11-17 00:14:46
【问题描述】:

我在 Laravel 中使用 paginate 来加载大量数据。快速变化的数据。问题是当用户滚动数据时,新行被插入到顶部。这会产生一个问题,即在用户加载第 1 页和第 2 页之间的时间内,用户看到从第 1 页推到第 2 页的重复行。例如:

数据:

  1. D
  2. E
  3. F

用户 A 使用 ->simplePaginate(2) 加载结果。

第 1 页加载:

结果:

  1. D
  2. E

在数据库中插入一行。

数据:

  1. C
  2. D
  3. E
  4. F

现在,用户 A 在页面 #1 上滚动浏览他的结果并加载页面 #2:

结果:

  1. E
  2. F

用户 A 现在刚刚看到:

  1. D
  2. E
  3. E
  4. F

在加载第二页时,我有什么方法可以轻松解决这个问题?

用户 A 应该看过

  1. D
  2. E
  3. F

当用户 A 加载页面 #2 说“嘿,现在顶部有新结果”时传递一些信息也非常酷。

【问题讨论】:

    标签: laravel laravel-query-builder laravel-paginate


    【解决方案1】:

    在第 1 页获取时间戳,然后在查询中添加一个附加子句,断言 created_at 在时间戳之前。

    $beforeTime = $request->input('before_time', Carbon::now());
    $items = Item::where('created_at', '<=', $beforeTime)->paginate(2);
    

    最后,确保将before_time 参数附加到分页链接:

    echo $items->appends(['before_time' => $beforeTime])->links();
    

    【讨论】:

    • 这太完美了!
    猜你喜欢
    • 2013-04-09
    • 2019-03-24
    • 2019-10-24
    • 2010-09-22
    • 1970-01-01
    • 2021-09-05
    • 2023-02-26
    • 2020-08-19
    • 2018-11-25
    相关资源
    最近更新 更多