Paginate не учитывает изменение результатов - PullRequest
0 голосов
/ 07 июля 2019

Я использую 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

Пользователь А теперь прокручивает свои результаты на страницах 1 и 2 загрузки:

Результаты:

E F

Пользователь A теперь только что увидел:

  1. D
  2. E
  3. E<- ошибка </li>
  4. F

Есть ли способ, которым я могу легко объяснить это при загрузке второй страницы?

Пользователь A должен был видеть

  1. D
  2. E
  3. F

Также было бы очень круто передать некоторую информацию, когда пользователь A загружает страницу № 2 со словами "Эй, сейчас есть новые результаты наверху. "

1 Ответ

1 голос
/ 07 июля 2019

Возьмите отметку времени на странице 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();
...