鍍金池/ 教程/ PHP/ 分頁
Laravel Cashier
Eloquent ORM
HTTP 響應
發(fā)行說明
擴展包開發(fā)
HTTP 控制器
事件
擴展框架
Contracts
開發(fā)
配置
表單驗證
錯誤與日志
Hashing
貢獻指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢構造器
Redis
升級向導
概覽
緩存
服務提供者
Envoy 任務執(zhí)行器
隊列
單元測試
服務容器
文件系統(tǒng) / 云存儲
認證
請求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁
輔助方法
應用程序結構
HTTP 路由
HTTP 請求
基本用法
本地化
HTTP 中間件
結構生成器
Facades
Laravel Elixir

分頁

配置

在其他的框架中,實現(xiàn)分頁是令人感到苦惱的事,但是 Laravel 令它實現(xiàn)起來變得輕松。 Laravel 可以產(chǎn)生基于當前頁面的智能「范圍」鏈接,所產(chǎn)生的 HTML 兼容 Bootstrap CSS 框架.

使用

有幾種方法來分頁對象。最簡單的是在搜索構建器使用paginate 方法或 Eloquent 模型。

對數(shù)據(jù)庫結果分頁

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

注意: 目前 Laravel 使用groupBy 來做分頁操作無法有效率的執(zhí)行,如果您需要使用groupBy 來分頁數(shù)據(jù)集,建議您手動查找數(shù)據(jù)庫,并使用Paginator::make。

對 Eloquent 模型分頁

您也可以對Eloquent 模型分頁:

$allUsers = User::paginate(15);

$someUsers = User::where('votes', '>', 100)->paginate(15);

發(fā)送給paginate 方法的參數(shù)是您希望每頁要顯示的對象選項數(shù)目,只要您取得查找結果后,您可以在視圖中顯示,并使用render 方法去建立分頁鏈接:

  <div class="container">
      <?php foreach ($users as $user): ?>
          <?php echo $user->name; ?>
      <?php endforeach; ?>
  </div>

  <?php echo $users->render(); ?>

這就是所有建立分頁系統(tǒng)的步驟了!您會注意到我們還沒有告知 Laravel 我們目前的頁面是哪一頁,這個信息 Laravel 會自動幫您做好。

您也可以透過以下方法獲得額外的分頁信息:

  • currentPage
  • lastPage
  • perPage
  • hasMorePages
  • url
  • nextPageUrl
  • total
  • count

「簡單分頁」

如果您只是要在您的分頁視圖顯示「上一頁」和「下一頁」鏈接,您有個選項simplePaginate 方法來執(zhí)行更高效率的搜索。當您不需要精準的顯示頁碼在視圖上時,這個方法在較大的數(shù)據(jù)集非常有用:

$someUsers = User::where('votes', '>', 100)->simplePaginate(15);

手動建立分頁

有的時候您可能會想要從數(shù)組中對象手動建立分頁實體, 您可以根據(jù)您的需要通過Illuminate\Pagination\PaginatorIlluminate\Pagination\LengthAwarePaginator 實體來建立。

自定義分頁 URL

您還可以透過setPath 方法自定義使用的 URL:

$users = User::paginate();

$users->setPath('custom/url');

上面的例子將建立 URL

追加分頁鏈接

您可以使用appends 方法增加搜索字串到分頁鏈接中:

<?php echo $users->appends(['sort' => 'votes'])->render(); ?>

這樣會產(chǎn)生類似下列的鏈接:

http://example.com/something?page=2&sort=votes

如果您想要將「哈希片段」加到分頁的 URL,您可以使用fragment 方法:

<?php echo $users->fragment('foo')->render(); ?>

此方法調用后將產(chǎn)生 URL,看起來像這樣:

http://example.com/something?page=2#foo

轉換至 JSON

Paginator 類實現(xiàn)Illuminate\Contracts\Support\JsonableInterface 接口的toJson 方法。由路由返回的值,您可能將Paginator 實體傳換成 JSON。JSON 表單的實體會包含一些「元」信息,例如totalcurrent_page、last_page。該實體數(shù)據(jù)將可通過在 JSON 數(shù)組中data 的鍵取得。

上一篇:Laravel Homestead下一篇:輔助方法