如何限制 laravel 分页中的页数?
How to limit amount of pages in laravel pagination?
我有一个分页并尝试限制该分页的页数。每页有 50 个结果,我希望此分页的最大页数是 200(来自 table 的 10k 总条目)。我尝试了以下方法:
$page_count = 50;
$users = DB::Table('user_totalpoints')->where('points', '>', 0)
->orderBy('points', 'desc')
->orderBy('id', 'asc')
->take(10000)
->paginate($page_count);
结果是一个分页,每页有 50 个结果,但包含 user_totalpoints table 中的所有条目。 take(10000) 被忽略,因为分页只占用了 50 个。所以我现在有数千页,而不是最多 200 页。
如何在 laravel 中限制分页的页数?
手动分页器LengthAwarePaginator
// limit page max to 200 and min to 1
$this->validate($request, [
'page' => 'required|integer|min:1|max:200'
]);
$page = $request->get('page');
$page_count = 50;
$total = 10000;
$users = DB::Table('user_totalpoints')->where('points', '>', 0)
->orderBy('points', 'desc')
->orderBy('id', 'asc')
->forPage($page, $page_count)
->get();
/**
* use Illuminate\Pagination\LengthAwarePaginator;
*/
$paginator = new LengthAwarePaginator($users, $total, $page_count, $page);
dd($paginator->toArray()); // view result
我有一个分页并尝试限制该分页的页数。每页有 50 个结果,我希望此分页的最大页数是 200(来自 table 的 10k 总条目)。我尝试了以下方法:
$page_count = 50;
$users = DB::Table('user_totalpoints')->where('points', '>', 0)
->orderBy('points', 'desc')
->orderBy('id', 'asc')
->take(10000)
->paginate($page_count);
结果是一个分页,每页有 50 个结果,但包含 user_totalpoints table 中的所有条目。 take(10000) 被忽略,因为分页只占用了 50 个。所以我现在有数千页,而不是最多 200 页。
如何在 laravel 中限制分页的页数?
手动分页器LengthAwarePaginator
// limit page max to 200 and min to 1
$this->validate($request, [
'page' => 'required|integer|min:1|max:200'
]);
$page = $request->get('page');
$page_count = 50;
$total = 10000;
$users = DB::Table('user_totalpoints')->where('points', '>', 0)
->orderBy('points', 'desc')
->orderBy('id', 'asc')
->forPage($page, $page_count)
->get();
/**
* use Illuminate\Pagination\LengthAwarePaginator;
*/
$paginator = new LengthAwarePaginator($users, $total, $page_count, $page);
dd($paginator->toArray()); // view result