Laravel 5.2分页+无限滚动重复

时间:2016-07-21 13:41:41

标签: laravel pagination duplicates infinite-scroll

我在Laravel应用中遇到了分页问题。 通常情况下,当我想使用Laravel分页时,让我们说3行为一页,我使用Eloquent方法 paginate / simplePaginate 结合方法 latest()像这样:

//MyController.php
$posts= Post->latest()->paginate(3);


//MyView.blade.php
@foreach ($posts as $post)
   {{ $post->id }}
@endforeach

{{ $posts->links() }}

所以,当我在我的数据库中有6个帖子并且使用Laravel分页+无限滚动时,它变为:

6 
5   (1. page) 
4
--- ('page separator') 
3 
2   (2. page) 
1

但是,如果用户在到达第2页之前将新行插入数据库表, 收集班次和第二页数据变为:

6 
5   (1. page) 
4
---   POST WITH ID 4 IS DUPLICATED BECAUSE OF SHIFT IN COLLECTION
4
3   (2. page) 
2

所以,例如---如果用户在到达paginator之前将三个新行插入数据库,那么第二个页面将输出与我当前第一页相同的三个表行,但是我想输出剩下的表行:

6 
5   (1. page) 
4
--- AT SOME TIME BEFORE PAGINATION WAS TRIGGERED, POST WITH ID '7' HAS BEEN ADDED
3 
2   (2. page) - continues normally with remaining rows (pagination ignores newly added row)
1

此问题是否有解决方法?

感谢。

2 个答案:

答案 0 :(得分:0)

我通过询问第一页服务的第一个记录ID来解决这个问题

// {initial query} $records->orderBy('created_at', 'desc');

    if(is_int($last_id)){
        $records = $records->where('id', '<=' , $last_id);
    }

    $records = $records->paginate($per_page);

这样,paginator从该id开始记录,忽略新记录

答案 1 :(得分:-1)

你可以试试这个:

MediaStore.Images.Thumbnails.getThumbnail