我在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
此问题是否有解决方法?
感谢。
答案 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