Laravel 手动分页实现详解
来源:互联网 发布:淘宝新建员工 编辑:程序博客网 时间:2024/04/28 07:25
因为Laravel 手册上对于手动分页的描述并不详细,这里大概说说笔者的实现方法
场景说明
在写一个大分类下所有文章的列表页时,笔者把取出来的数据都转换成了数组,这里为了清晰的说明并没有使用Repository来进行封装。
/*** 当parent_id为0时为顶级分类,这时候会把顶级分类* 下的文章以及子分类下的文章都放到一个数组中* 当parent_id不为0时取出对应分类下的文章*/Cate::find($id)->first()->parent_id == 0 ? $listInfo = array_merge(Cate::with('articles')->where('id',$id)->get()->toArray(), Cate::with('articles')->where('parent_id',$id)->get()->toArray()) : $listInfo = Cate::with('articles')->where('id',$id)->get()->toArray();
因为转换成数组的缘故,不能直接使用paginate()
方法来实现分页。
手动实现分页
/*** ArticleListController.php* */<?phpnamespace App\Http\Controllers;use App\Cate;use Illuminate\Pagination\LengthAwarePaginator;class ArtlistController extends AppController{ public function index($id) { Cate::find($id)->first()->parent_id == 0 ? $listInfo = array_merge(Cate::with('articles')->where('id',$id)->get()->toArray(), Cate::with('articles')->where('parent_id',$id)->get()->toArray()) : $listInfo = Cate::with('articles')->where('id',$id)->get()->toArray(); $count = 0; foreach ($listInfo as $item) { $count += count($item['articles']); } $paginator = new LengthAwarePaginator($listInfo,$count,4); $categories = $this->parent(); return view('article.list',['categories' => $categories,'listInfo' => $listInfo,'paginator' => $paginator]); }}
以上的关键代码如下
$count += count($item['articles'])
把分页数据的总数
求出来$paginator = new LengthAwarePaginator($listInfo,$count,4)
这里的参数依次是分页的数据
,分页数据的总数
,每页多少条
。第三个参数可以直接写到conf文件中来灵活调整。
/*** list.blade.php**/{!! $paginator->render() !!}
然后是前端模板中的写法。Done!
查看更多,请访问我的博客
by vampirebitter
0 1
- Laravel 手动分页实现详解
- Laravel 手动分页实现详解
- Laravel 手动分页实现
- laravel手动创建分页
- Laravel 手动分页
- Laravel手动创建分页器
- Laravel手动创建分页器
- Laravel 手动创建分页器 LengthAwarePaginator
- laravel 分页实现
- 手动实现Gridview分页
- Java实现手动分页
- angular实现手动分页
- Laravel 分页缓存的实现
- laravel中的数组分页实现
- 手动实现表格分页功能
- Laravel分页
- 手动分页
- Laravel实现多用户认证功能实现详解
- 【第二十一课】流---对象的序列化
- 手机号不为11位
- Invalid maximum heap size: -Xmx4g错误解决
- adb 命令
- UBUNTU 16.04 安装日记
- Laravel 手动分页实现详解
- php 反射学习
- Android,在争议中逃离 Linux 内核的 GPL 约束
- Oracle日期比较:2015/6/3 19:18:29 DATE类型 与 20161128095601 VARCHAR2(16)类型
- Android Studio中导入Eclipse项目
- 项目架构开发:服务层
- 【Linux基础】Linux C编程环境
- 代码复制有风险
- 【第二十一课】流----System类中SetErr和SetOut方法的使用