Laravel は配列のページネーションを手動で作成します

不言
リリース: 2023-03-30 16:02:01
オリジナル
2729 人が閲覧しました

この記事では、Laravel で配列ページングを手動で作成する実装コードを主に紹介します。編集者がそれを参考にさせていただきます。

この記事では、laravel で配列ページングを手動で作成する実装コードを紹介し、詳細は次のとおりです。

laravelページング関数:

データをページ分割するにはいくつかの方法があります。最も簡単な方法は、Query Builder または Eloquent Query で paginate または simplePaginate メソッドを使用することです。

paginate の使用法は次のとおりです:

//控制器中 $users = DB::table('users')->paginate(15); return view('user.index', ['users' => $users]); //视图中 {{ $users->links() }}
ログイン後にコピー

効果は次のとおりです:

「前のページ」 「1」「 2」「3」「次のページ」

simplePaginate の使用法は次のとおりです。

//控制器中 $users = User::where('votes', '>', 100)->simplePaginate(15); return view('user.index', compact('users')); //视图中 {{ $users->links() }}
ログイン後にコピー

効果は次のとおりです。次のようになります。

「前のページ」「次のページ」

注:

  1. ページ分割されたビューの単純な「次のページ」 「ページ」および「前のページ」リンク。つまり、各ページ番号のリンクを表示する必要はありません。より効率的なクエリを実行するには、simplePaginate メソッドを使用することをお勧めします。

  2. 現在、Laravel は groupBy ステートメントを使用してページング操作を効率的に実行できません。ページ分割された結果セットで groupBy を使用する必要がある場合は、データベースにクエリを実行し、ページネータを手動で作成することをお勧めします。

$dataA と $dataB はデータベースから取得された 2 つの異なるデータ セットであり、これらを同時にビューに割り当てる必要がある場合があります。時刻を指定してページング表示を行うのですが、この場合はどうすればよいでしょうか?

#この場合、laravel 配列ページングを使用できます。

実は、laravelのドキュメントには、ページングクラスを使用してページネーションする方法がすでに書かれていますが、詳細な説明はありません。

ページネーションを手動で作成する

ページング インスタンスを手動で作成し、最終的に配列型の結果を取得する場合は、ニーズに応じて IlluminatePaginationPaginator または IlluminatePaginationLengthAwarePaginator インスタンスを作成できます。 。

詳細については、IlluminatePaginationLengthAwarePaginator のコードを参照してください:

public function __construct($items, $total, $perPage, $currentPage = null, array $options = []) { foreach ($options as $key => $value) { $this->{$key} = $value; } $this->total = $total; $this->perPage = $perPage; $this->lastPage = max((int) ceil($total / $perPage), 1); $this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path; $this->currentPage = $this->setCurrentPage($currentPage, $this->pageName); $this->items = $items instanceof Collection ? $items : Collection::make($items); }
ログイン後にコピー

具体的な実装コードは次のとおりです:

//控制器中 public function index(LiveService $liveService, Request $request) { //数据A $dataA = User::where('status', 1)->get()->toArray(); //数据B $dataB = User::where('status', 2)->get()->toArray(); $data = array_merge($dataA, $dataB); //当前页数 默认1 $page = $request->page ?: 1; //每页的条数 $perPage = 4; //计算每页分页的初始位置 $offset = ($page * $perPage) - $perPage; //实例化LengthAwarePaginator类,并传入对应的参数 $data = new LengthAwarePaginator(array_slice($data, $offset, $perPage, true), count($data), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]); return view('admin.users.index', compact('data')); } //视图中 {{ $data->links() }}
ログイン後にコピー

上記は基本的に配列のページングを完了します。一般的なプロセスは、コントローラーが現在のページ番号を取得し、LengthAwarePaginatorクラスをインスタンス化し、必要なパラメーターを渡すことです。各ページに表示するデータをarray_slice()メソッドで取得します。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel プログラム アーキテクチャ設計におけるアクション クラスの使用

##

以上がLaravel は配列のページネーションを手動で作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!