Laravel 5.4---后端数据分页和前端显示分页结果

后端数据(Eloquent 模型)分页php

事先创建好Eloquent 模型和Controller 还有 前台的View。能够参考我以前的文章:Laravel建站03--创建前台文章列表和文章详情html

在controller 里获取分页数据:laravel

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Article;

use Illuminate\Support\Facades\Cache;
use Carbon\Carbon;

class ArticleController extends Controller
{
    public function index()
    {
        //方式一:能够用 facade 进行接近原生SQL方式查询,也能够彻底用SQL语句,如:$users = DB::select('select * from users where active = 1');。不过我得这样很差
        // $articles = DB::table('articles')
        //             ->select('id', 'body', 'title')
        //             ->orderBy('id', 'desc')
        //             ->paginate(5);   //分页的关键,这里是能够显示页码的分页,也能够用简单分页,只显示上一页,下一页。数据量大时,简单分页会更快
        //方式二:模型直接分页
        //$articles = Article::paginate(5);
        //方式三:模型简单分页
        //$articles = Article::simplePaginate(5);
        //在方式二的基础上增长排序规则
        //$articles = Article::orderBy('id', 'desc')->paginate(5);
        //在方式三的基础上增长查询的列
        $articles = Article::select('id', 'title')->orderBy('id', 'desc')->paginate(5);
        return view('welcome', ['articles' => $articles]);
    }
}DB

 

前台显示分页结果后端

  • 在Laravel中显示分页HTML仍是很简单的。只用一句话就能够搞定:
{{ $articles->links() }}
  •  若是想在前台分页链接中附加参数,能够在controller绑定view中增长参数:
return view('welcome', ['articles' => $articles, 'params1' => 'a', 'params2'=>'b']);

  而后把前台的代码修改成:app

{{ $articles->appends(['p1' => $params1, 'p2' => $params2])->links() }}

  这样前台分页的地址就从?page=2 变成?p1=a&p2=b&page=2 了。spa

  • 自定义分页HTML

  想自定义分页HTML,能够修改Laravel分页视图:vendor/laravel/framework/src/Illuminate/Pagination/resources/views/ 文件夹下的视图文件code

相关文章
相关标签/搜索