在 Laravel 中,手動創建分頁有多種方法。以下是一些建議和技巧:
使用 LengthAwarePaginator 類:
Laravel 提供了一個 LengthAwarePaginator
類,可以幫助你手動創建分頁實例。首先,確保在文件頂部引入所需的命名空間:
use Illuminate\Pagination\LengthAwarePaginator;
然后,你可以創建一個新的 LengthAwarePaginator
實例并傳遞相關參數,如當前頁、每頁顯示的項目數量等。
從查詢構建器或 Eloquent 獲取數據:
在創建分頁實例之前,你需要從數據庫獲取數據。可以使用查詢構建器或 Eloquent ORM 來實現這一點。例如,使用查詢構建器:
$query = DB::table('your_table')->where('some_condition', true);
或者使用 Eloquent ORM:
$query = YourModel::where('some_condition', true);
計算總數和執行分頁查詢:
在創建分頁實例之前,需要知道查詢的總數。可以使用 count()
方法獲取總數。然后,根據當前頁和每頁顯示的項目數量,執行分頁查詢。
$total = $query->count();
$perPage = 10; // 每頁顯示的項目數量
$currentPage = request()->input('page', 1); // 當前頁,默認為 1
$offset = ($currentPage - 1) * $perPage;
使用 skip()
和 take()
方法進行分頁查詢:
使用查詢構建器或 Eloquent ORM 的 skip()
和 take()
方法來獲取分頁數據。
$items = $query->skip($offset)->take($perPage)->get();
創建分頁實例:
使用 LengthAwarePaginator
類創建一個新的分頁實例,并傳遞相關參數。
$paginator = new LengthAwarePaginator($items, $total, $perPage, $currentPage, [
'path' => LengthAwarePaginator::resolveCurrentPath(),
]);
將分頁數據傳遞給視圖:
將分頁數據傳遞給視圖,以便在視圖中顯示分頁鏈接。
return view('your_view', ['items' => $paginator]);
在視圖中顯示分頁鏈接:
在視圖中,使用 links()
方法顯示分頁鏈接。
{{ $items->links() }}
通過遵循這些技巧,你可以在 Laravel 中輕松地實現手動分頁。