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