数据分页

在laravel里面要完成分页是很简单的,它的思想之前的框架有些不一样,之前框架使用的是分页类完成分页,laravel是直接调用模型的分页方法,返回对应的数据和分页的字符串。
官方手册:链接

2.1.查询构造器分页

数据分页有多种方法。最简单的是使用 查询构造器 或 Eloquent query 的 paginate 方法。paginate 方法根据用户浏览的当前页码,自动设置恰当的偏移量 offset 和限制数 limit。默认情况下,HTTP 请求中的 page 查询参数值被当作当前页的页码。 Laravel 会自动检测该值,并自动将其插入到分页器生成的链接中。

在下面的例子中,传递给paginate方法的唯一参 数是你想要在每页显示的记录数。
在此例中,我们指定要在每页显示2条数据:

1.详细分页

控制器:

  1. //每页展示两条数据(详细分页-带页码)
  2. $nows = DB::table('member')->paginate(2);
  3. $data = compact('nows');
  4. return view('fy',$data);
  5. //如果你希望展示简单分页(没有页码的分页)
  6. //可以调用simplePaginate( )方法
  7. $users = DB::table('members')->simplePaginate(2);

分页样式只显示上一项和下- -页,中间的页码不显示,显示效果会发生样式错乱,是因为
2.数据分页 - 图2
修改配置文件:系统默认的样式比较乱
修改源码改成默认配置为bootstrap
. vendor/laravel/framework/srclluminate/Pagination/AbstractPaginator.
php 116行124行
image.png
视图 (展示分页结果):

//引入bootstrap css样式分页样式
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">



@foreach($nows as $v)
    {{$v->username}}
@endforeach

{{$nows->links()}}

2.搜索分页

如果你想要使分页链接携带参数,则可以使用appends( )方法

//如下实例代码可以使分页链接携带参数【属性->sort,值->votes】
{{ $users->appends(['sort' => 'votes'])->links() }}

如果你想要把所有的查询参数值添加到分页链接,可以使用withQueryString方法:

//如下实例可以将上一页查询的所有结果带给下一页
//当然,你也可以为withQueryString方法指定参数,带哪些数据
{{ $users->withQueryString()->links() }}

搜索分页
实例模板文件:

<form action="">
  //value  用来保存搜索的数据写入搜索框中
    <input type="text" name="search" value="{{request()->get('search')}}">
    <input type="submit" value="搜索">
    @foreach($nows as $v)
        <br>
        {{$v->username}}
        <br>
        {{$v->password}}
    @endforeach
      //appends 参数 用来在翻页时携带传参
    {{$nows->appends(['search'=>request()->get('search')])->links()}}
</form>

控制器:

//注意where都用where  orWhere都用orWhere 不能两者都用
$cont = $request->input('search');
        $nows = DB::table('member')
            ->orWhere('username','like',"%$cont%")
            ->orWhere('password','like',"%$cont%")->
            paginate(2);
$data = compact('nows');
return view('fy',$data);

3.获取分页信息

image.png