我正在使用Laravel version 5.2。由于它有大量的数据,所以我使用游标pagiations,如下表所示,它具有primary id和name字段。
for page 1 -> select * from table LIMIT 10
For page 2 -> select * from table where id < $lastpagelastementID LIMIT 10同样,如果我们按照name列进行排序,我们如何处理这个cursor pagination?
有什么选择吗?
我们可以使用Laravel分页,如
但我需要像上面那样的光标分页。有人能帮我找到解决办法吗?
发布于 2019-01-08 09:06:29
您可以使用以下方法通过composer安装此软件包:
composer require juampi92/cursor-paginationConfig
若要将配置文件发布到config/cursor_pagination.php,请运行:
php artisan vendor:publish --provider="Juampi92\CursorPagination\CursorPaginationServiceProvider" --tag="config"它是如何工作的
游标分页背后的主要思想是,它需要一个上下文来知道下一步要显示什么结果。所以,你不是说page=2,而是next_cursor=10。结果与传统的页面分页相同,但是现在您对输出有了更多的控制,因为next_cursor=10应该始终返回相同的内容(除非删除一些记录)。
Pros
Cons
按下查询生成器结果
有几种方法对项进行分页。最简单的方法是在查询生成器或雄辩查询上使用方法。cursorPaginate方法自动负责设置适当的限制,并根据用户正在查看的游标获取下一个或以前的元素。默认情况下,cursor由HTTP请求上的页面查询字符串参数的值检测到。此值由包自动检测,同时考虑到您的自定义配置,还会自动插入由分页器生成的链接和元。
public function index()
{
$users = DB::table('users')->cursorPaginate();
return $users;
}发布于 2019-01-08 09:15:27
我想这能解决你的问题。这是一种定制的分页
在您的刀片视图文件:
<!-- pass variable page with a value
this generation of your pagination
should be based to the number of rows
of your table in the database and not
static. use foreach for this.
-->
<a href="pagination?page=1">1</a>
...在“主计长”中:
public function pagination(Request $request){
// set the target page to 0 if page is 1 or null
// else get the value
$targetPage = ($request->input('page') == 1 || !$request->input('page')) ? 0 : ($request->input('page') - 1) ;
$noOfDataToGet = 10;
// get the number of data and skip the data based of target page * number of data
$tables = Tables::take($noOfDataToGet)->skip($targetPage * $noOfDataToGet)->get();
}希望这能有所帮助
https://stackoverflow.com/questions/54088151
复制相似问题