Laravel5.1 分页展示

Laravel为我们提供了一套分页的逻辑,我们无需自己实现分页逻辑,只需要执行几个简单的方法就能实现漂亮的分页。


 1 simplePaginate

这是一种只显示上一页下一页的样式分页,我们来看看怎么用:

class PostController extends Controller
{
    public function index()
    {
//        $posts = Post::simplePaginate(10);      这是Model的版本
        /**
         * simplePaginate
         * 第一个参数:每页显示多少条数据。
         * 第二个参数:(可选)查询的字段 默认是*
         * 第三个参数:(可选)页码名称 默认是page
         */
        $posts = DB::table('posts')->simplePaginate(10);
        return view('post.index', compact('posts'));
    }
}

然后在blade模板中用$posts->render()显示:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>

<body>
<div class="container">
    <h1>Posts</h1>
    <hr>
    <ul>
        @foreach($posts as $post)
            <li>
                <h4>{{ $post->title }}</h4>
                <p>{{ str_limit($post->content) }}</p>
            </li>
        @endforeach
    </ul>
    {!! $posts->render() !!}
</div>
</body>
</html>

 2 Paginate

这是一个自带页码的样式分页。

class PostController extends Controller
{
    public function index()
    {
//        $posts = Post::paginate(10);      这是Model的版本
//        $posts = Post::where('create_at', '<', Carbon::now())->paginate();    可以在where等逻辑后使用
        /**
         * simplePaginate
         * 第一个参数:每页显示多少条数据。
         * 第二个参数:(可选)查询的字段 默认是*
         * 第三个参数:(可选)页码名称 默认是page
         * 第四个参数:(可选)代表第几页 默认是null
         */
        $posts = DB::table('posts')->orderBy('created_at', 'desc')->paginate(10);
        return view('post.index', compact('posts'));
    }
}

然后在blade模板中用$posts->render()显示:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>

<body>
<div class="container">
    <h1>Posts</h1>
    <hr>
    <ul>
        @foreach($posts as $post)
            <li>
                <h4>{{ $post->title }}</h4>
                <p>{{ str_limit($post->content) }}</p>
            </li>
        @endforeach
    </ul>
    {!! $posts->render() !!}
</div>
</body>
</html>