Laravel —— 特殊分页

项目中,分页经常会用到。

Laravel 中也自带了分页功能。

但有些时候需要稍作修改,来满足自己的需求。

一、普通分页

1、控制器中,用 paginate() 方法。

  $users = DB::table(‘users‘)->paginate(15);

  或简单分页

  $users = DB::table(‘users‘)->simplePaginate(15);

2、blade 模板中,可直接用查询结果数据

  {{ $users->links() }}、{{ $users->render() }}

  分页自带了 bootstamp 样式

3、自定义分页 URI

  $users->withPath(‘custom/url‘);

4、附加参数到分页

  $users->appends([‘sort‘ => ‘votes‘])->links()

二、自定义分页

1、自定义分页模板

  php artisan vendor:publish --tag=laravel-pagination

  会在 resources/views 目录下自动创建 pagination/ 目录

  会把自带分页中的模板 copy 在以上目录中。

2、修改模板

  比如修改显示链接数,分页内容等。

3、调用自定义模板

  $paginator->links(‘view.name‘)

  links 参数为模板路径

三、集合中的分页

  很多时候查询结果需要用 Collection 处理后再分页,而 Laravel 中是不支持的。

  下面稍作修改,来实现上面的需求

1、集合处理查询结果

$users = DB::table(‘users‘)
            ->get()
            ->each(function($item, $key){
                $item->total = 11;
            })->paginate(15);

  

  经过上面的处理后,会发现分页消失了。

2、分页加入服务提供者中

  在 app/Providers/AppServiceProvider.php 文件,

  头部引入下面类

use Illuminate\Pagination\Paginator;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;

  

  boot 方法中添加以下代码

  

if (!Collection::hasMacro(‘paginate‘)) {
            Collection::macro(‘paginate‘,
                function ($perPage = 15, $page = null, $options = []) {
                    $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
                    return (new LengthAwarePaginator(
                        $this->forPage($page, $perPage), $this->count(), $perPage, $page, $options))
                    ->withPath(‘‘);
                });
        }

再去测试,发现分页又回来了。

原文地址:https://www.cnblogs.com/rendd/p/11617348.html

时间: 2024-10-12 07:28:12

Laravel —— 特殊分页的相关文章

laravel自定义分页

laravel框架自带有分页处理类,并且与ORM模型结合,我们可以非常方便的使用这个分页,它提供了方便与给了一些扩展麻烦. 框架自带有三套分页显示模板,具体的可以修改\app\config\view.php配置文件中的'pagination' => 'pagination::slider-3'. 在这个配置中'pagination::slider-3'前面的pagination是指定要调用的分页处理类名,后台是给这个分页指定模板文件名,这几个模板都放在框架内部\vendor\laravel\fr

Laravel 手动分页实现

Laravel 手动分页实现 基于5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perPage),但是这种方法只适用model.查询构建器. 今天说下 给定一个数组如何实现 和paginate方法一样的效果. 查看paginate方法源码 #vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480

laravel 自定义分页 offset 和 limit 的使用

laravel 本身有一个自带的快速分页方法 paginate,只需要传入每页显示多少条数据就可以 了,但是如果想使用自定义从哪里开始呢,这时候就可以使用offset 和 limit 的组合,offset 设置从哪里开始,limit 设置想要查询多少条数据. Model::offset(10)->limit(10)->get() 上面的代码表示查询出第11-20条数据. 百牛信息技术bainiu.ltd发布与博客园

laravel框分页使用group后的问题

laravel框中的ORM模型确实很方便,尤其分页操作非常方便,但最近发现一个问题,当我们使用的SQL中添加了groupBy条件后再分页就会有一个问题. 不难看出,框架是取出所有的数据,然后通过array_slice来截取需要的数据段. 这种方式在数据量不大时完全没有问题,当前数据量过3000或更多时,就会报错,主要的错误是内存超出,本来框架查询出来的数据是以对象的形式返回,这样会大大的增加了内存开销. 如果这个时候还想使用框架自带的分页功能,就不能直接使用这个 paginate 函数来分页,必

laravel 筛选+分页结合跳转问题

场景: 使用laravel自带的分页{!!  $list->render() !!},如果这会选择筛选,然后点击第二页 ,会出现url没有带筛选的数据. 解决方案: 1.如用appends() {!! $lessions->appends(['title'=>'article','price'=>500])->render() !!} 原文地址:https://www.cnblogs.com/sz-xioabai/p/11413989.html

Laravel框架——分页

第一种:查询时实现分页(不能使用groupBy) $users = App\User::paginate(15); or $users = User::where('votes', '>', 100)->paginate(15); //如果你只需要在分页视图中简单的显示"下一个"和"上一个"链接,可以使用simplePaginate方法来执行该查询User::simplePaginate(15); 第二种:手动创建分页器 有时候你可能想要通过传递数组数据

Laravel 自定义分页样式

操作步骤如下: (1)  对应public/css/paging.css 文件建立分页样式. (2)  控制器查出分页数据使用 paginate函数进行分页处理.(禁止使用group by处理查询). (3) 对应视图引入分页样式. 例如: paging.css 文件代码(复制即可用,实际操作过)如下 #pull_right{ text-align:center; } .pull-right { /*float: left!important;*/ } .pagination { display

laravel 手动分页 我分的是数组

namespace App\Http\Controllers\Admin; use Illuminate\Http\Request;use App\Http\Controllers\Controller;use DB;use Illuminate\Pagination\LengthAwarePaginator;use Illuminate\Support\Collection; class AdnamesController extends Controller{ public function

Laravel手动分页的方法

use Illuminate\Pagination\LengthAwarePaginator; public function index(Request $request){ $list =[...]; //当前页数 默认1 $page = $request->page ?: 1; //每页的条数 $perPage = 10; //计算每页分页的初始位置 $offset = ($page * $perPage) - $perPage; //实例化LengthAwarePaginator类,并传