<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 分頁 ``` //$students=Student::get(); $students=Student::paginate(2); //每次取2條 return view('imocc.stu',[ 'students'=>$students ]); ``` Student是模型類,每頁取2條 還有個就是按照最后的來取 ~~~ Route::get('/lessons', function() { //要創建Lesson模型的 // $lessons=\App\Lesson::all(); $lessons=\App\Lesson::latest()->paginate(15);//表示按照最新數據來分,分頁池每頁顯示15 return view('lessons.index',compact('lessons')); }); ~~~ 頁碼在視圖中這樣寫就行了 ~~~ <div> {{$students->render()}} </div> ~~~ # 還有種分頁 ~~~ //rq是自己定義的函數,獲取請求的信息的 //有沒有自己定義的函數,獲取請求的信息的 $limit=rq('limit')?:15; //要跳過多少,沒有就默認在第一頁,后面要跟減一,否則一開始就跳過15了 $skip((rq('page')?:1)-1)*limit; $r=$this->orderBy('created_at') ->limit($limit) ->skip($skip) ->get(['id','title','user_id']) ->keyBy('id'); //這行意思就是結果加上對應的下標,下標就是按照id來的 ~~~ 加選中樣式 ~~~ <a href="{{url('stu')}}" class="{{Request::getPathInfo()=='/stu'?'active':''}}">學生列表</a> ~~~ # 數組分頁 ~~~ $list = [];//你查詢出來的結果 $page = Request::get('page', 1); // 獲取頁碼 $perPage = 15;//每頁的條數 $offset = ($page * $perPage) - $perPage;//計算每頁分頁的初始位置 //最后的[]可以不要 $list = new LengthAwarePaginator(array_slice($list,$offset,$perPage,true),count($list),$perPage, $page,['path' => Request::url(), 'query' => Request::query()]); ~~~ 實際上這樣就已經實現了數組分頁,有興趣的同學可以點進去這個類看看這個類的構造方法。其實就會明白我傳的這些參數的意思了,其實它就是相當于每次頁面訪問控制器的時候,得到頁數,然后根據每頁的條數計算出這時候頁面上要顯示的內容,其實就是每次通過array_slice()來取每個頁面的值而已 # 詳解原理 ## 簡介 分頁模塊的基本使用有兩種:一種是基于查詢構建器或Eloquent模型,調用paginate方法;另一種是手動創建分頁器; Laravel框架的分頁器不僅實現了數據的分頁,而且支持生成Bootstrap的分頁框 ## 使用 ### 基于查詢構建器或Eloquent模型 從User表獲取數據,每頁16條,可以這樣寫 ~~~ $users = DB::table('user')->paginate(16); // 或 $users = User::paginate(16); ~~~ 這時的$user是Illuminate\Pagination\LengthAwarePaginator實例;這里沒有傳遞當前頁的原因是,如果不傳遞,會從$request請求獲取當前頁; paginate方法完整參數定義如下: ~~~ paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) ~~~ 其中 $perPage 代表每頁顯示數目, $columns 代表查詢字段, $pageName 代表頁碼名稱, $page 代表第幾頁。 同理,也可以獲取另一種分頁,簡單分頁 ~~~ $users = DB::table('user')->simplePaginate(16); // 或 $users = User::simplePaginate(16); ~~~ 這時的$user是Illuminate\Pagination\Paginator實例; 要想在頁面呈現分頁器的小方塊, 只要在blade.php 中書寫 ~~~ {!! $users->render() !!} ~~~ ### 手動創建 通過看看Laravel的Database是怎么實現創建分頁器,更好地學會使用手動創建; 先看看paginate方法, ~~~ public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) { // 獲取當前頁數 $page = $page ?: Paginator::resolveCurrentPage($pageName); // 獲取每頁的數量 $perPage = $perPage ?: $this->model->getPerPage(); // Collection類,存放當前頁的數據記錄 $results = ($total = $this->toBase()->getCountForPagination()) ? $this->forPage($page, $perPage)->get($columns) : $this->model->newCollection(); return new LengthAwarePaginator($results, $total, $perPage, $page, [ // 當前頁面的 url 'path' => Paginator::resolveCurrentPath(), 'pageName' => $pageName, ]); } ~~~ 再看看simplePaginate方法 ~~~ public function simplePaginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) { // 獲取當前頁數 $page = $page ?: Paginator::resolveCurrentPage($pageName); // 獲取每頁的數量 $perPage = $perPage ?: $this->model->getPerPage(); // 調用 Database 模塊當前類的方法,獲取當前頁的數據; // 下面這個語句只是設置查詢條件,get 方法調用時才是真正去獲取 $this->skip(($page - 1) * $perPage)->take($perPage + 1); return new Paginator($this->get($columns), $perPage, $page, [ // 當前頁面的 url 'path' => Paginator::resolveCurrentPath(), 'pageName' => $pageName, ]); } ~~~ ## 看看源代碼 服務提供者 ServiceProvider boot方法 ~~~ public function boot() { // 注冊包視圖 $this->loadViewsFrom(__DIR__.'/resources/views', 'pagination'); // 如果程序是在命令行下運行,則將模塊內的`resources/views`文件夾下的文件 // 發布一份到項目的`views/vendor/pagination`文件夾; // publishes 方法的第二個參數是 group 組; if ($this->app->runningInConsole()) { $this->publishes([ __DIR__.'/resources/views' => $this->app->resourcePath('views/vendor/pagination'), ], 'laravel-pagination'); } } ~~~ register方法 ~~~ public function register() { // 綁定 view 視圖解析器 Paginator::viewFactoryResolver(function () { return $this->app['view']; }); // 綁定 url 路徑解析器,返回當前 url Paginator::currentPathResolver(function () { return $this->app['request']->url(); }); // 綁定 當前頁 解析器,返回當前頁 Paginator::currentPageResolver(function ($pageName = 'page') { $page = $this->app['request']->input($pageName); if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) { return $page; } return 1; }); } ~~~ 分頁器類有兩個Paginator和LengthAwarePaginator,都繼承了父類AbstractPaginator;兩者的主要區別主要在于render方法,也就是呈現的bootstrap風格的分頁器不一樣; Paginator的分頁器,只有上一頁和下一頁的圖標 ![](https://box.kancloud.cn/4d6148d3fe108bbde177e6c77d201988_584x342.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看