分页无法说明更改结果

时间:2019-07-07 00:59:47

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

我在Laravel中使用分页来加载大量数据。数据变化迅速。问题在于,随着用户滚动数据,新行将插入到顶部。这就产生了一个问题,即在用户加载页面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并说“嘿,现在顶部有新结果”时,传递一些信息也很酷。

1 个答案:

答案 0 :(得分: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();