分頁

2018-12-17 10:54 更新

配置

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

           

使用

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

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

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

           

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

手動創(chuàng)建分頁實例

有時你也許希望手動創(chuàng)建發(fā)呢也實例,傳遞一個數(shù)組作為參數(shù)。你可以根據(jù)需求創(chuàng)建 Illuminate\Pagination\Paginator 或者 Illuminate\Pagination\LengthAwarePaginator 實例。

對 Eloquent 模型分頁

您也可以對 Eloquent 模型分頁:

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

           

發(fā)送給 paginate 方法的參數(shù)是您希望每頁要顯示的對象選項數(shù)目,只要您取得查找結(jié)果后,您可以在視圖中顯示,并使用 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

  • firstItem

  • lastItem

  • total

  • count

「簡單分頁」

如果您只是要在您的分頁視圖顯示「上一頁」和「下一頁」鏈接,您有個選項 simplePaginate 方法來執(zhí)行更高效率的搜索。當(dāng)您不需要精準(zhǔn)的顯示頁碼在視圖上時,這個方法在較大的數(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,類似以下內(nèi)容: http://example.com/custom/url?page=2

           

追加分頁鏈接

您可以使用 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(); ?>

           

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

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

           

           

轉(zhuǎn)換至 JSON

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號