この記事では、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() }}
効果は次のとおりです。次のようになります。
「前のページ」「次のページ」
注:
ページ分割されたビューの単純な「次のページ」 「ページ」および「前のページ」リンク。つまり、各ページ番号のリンクを表示する必要はありません。より効率的なクエリを実行するには、simplePaginate メソッドを使用することをお勧めします。
現在、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 サイトの他の関連記事を参照してください。