为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 分页问题

laravel 分页问题

PHP
噜噜哒 2019-03-06 12:52:11
从接口获取的数据 合并 数据库数据后的数组 如何分页显示
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

手动创建分页器

有时候你可能想要通过传递数组数据来手动创建分页实例,
你可以基于自己的需求通过创建 Illuminate\Pagination\Paginator 
或 Illuminate\Pagination\LengthAwarePaginator 实例来实现。

Paginator 类不需要知道结果集中数据项的总数;
不过,正因如此,该类也没有提供获取最后一页索引的方法。
LengthAwarePaginator 接收参数和 Paginator 几乎一样,只是,它要求传入结果集的总数。

换句话说,Paginator 对应 simplePaginate 方法,
而LengthAwarePaginator 对应 paginate 方法。

    注:当手动创建分页器实例的时候,应该手动对传递到分页器的结果集进行“切片”,
    如果你不确定怎么做,查看 PHP 函数 array_slice。

---上面来自 laravel 学院手册

use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
# 仅做演示 #
function userList(Request $request) {
  $users = [
    ['username'=>'zhangsan', 'age'=>26],
    ['username'=>'lisi', 'age'=>23],
    ['username'=>'wangwu', 'age'=>62],
    ['username'=>'zhaoliu', 'age'=>46],
    ['username'=>'wangmazi', 'age'=>25],
    ['username'=>'lanzi', 'age'=>24],
    ['username'=>'pangzi', 'age'=>21]
  ];
  $perPage = 3;
  if ($request->has('page')) {
      $current_page = $request->input('page');
      $current_page = $current_page <= 0 ? 1 :$current_page;
  } else {
      $current_page = 1;
  }
  $item = array_slice($users, ($current_page-1)*$perPage, $perPage); //注释1
  $total = count($users);
  $paginator =new LengthAwarePaginator($item, $total, $perPage, $currentPage, [
      'path' => Paginator::resolveCurrentPath(), //注释2
      'pageName' => 'page',
  ]);
  $userlist = $paginator->toArray()['data'];
  return view('userlist', compact('userlist', 'paginator'));
}

---来自百度

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 696 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信