ホームページ >PHPフレームワーク >ThinkPHP >ThinkPhpにページングチュートリアルを実装する方法
この記事では、thinkphpでのページネーションの実装、一般的な問題とカスタマイズオプションに対処します。 コア機能は、
クラスに依存しています。 主に、データベースクエリビルダーのThinkPaginator
という名前のモデルがあると仮定します。 これができる方法は次のとおりです。paginate()
このコードスニペットは、Article
テーブルから記事を取得し、1ページあたり15件の記事でそれらをパジネートします。
<code class="php">use think\Db; // Fetch articles with pagination $articles = Db::name('article')->paginate(15); // 15 articles per page // Assign the paginated data to the template variable $this->assign('articles', $articles); // Render the view return $this->fetch();</code>オブジェクトを返します。現在、
変数は、現在のページの記事とページネーション情報の両方を保持しています。 この情報は、ThinkPHPのデフォルトテンプレートエンジンを使用する場合、article
変数を使用してビュー内で自動的にレンダリングされます。 これには、前のページと次のページへのリンクと、ページ番号が含まれます。 デフォルトのビューレンダリングがこれを処理します。 ページネーションを手動でレンダリングしたい場合は、paginate()
。 幸いなことに、広範囲にカスタマイズできます。 これは、主にPaginator
オブジェクトの$articles
メソッドとテンプレート変数を使用して達成できます。{$articles}
Paginator
render()
Paginator
これにより、ブートストラップスタイルのページネーションが使用されます。独自のカスタムページネーションテンプレートを作成して、外観を完全に制御できます。 これには、カスタムビューファイルを作成し、構成内のパスを指定することが含まれます。Thinkphpのさまざまなページネーション方法
ThinkPhpは、上記のデータベース駆動型ページネーションアプローチを主に使用しています。これは、現在のページのデータのみを取得するため、大規模なデータセットにとって最も効率的な方法です。 代替アルゴリズムの意味では、他に明確で公式にサポートされている「メソッド」はありません。 ただし、カスタムページネーションロジックを実装できますが、これは、組み込みpaginate()
メソッドが処理できない非常に具体的な要件がない限り、一般的に推奨されません。 たとえば、チャンクでデータを取得することにより、非常に大きなデータセットのページネーションを手動で処理する場合がありますが、これには複雑さと潜在的なパフォーマンスの問題があります。
WHERE
条項を使用します。 適切な消毒なしにデータベースクエリにユーザーがサプセルした値を直接使用しないでください。以上がThinkPhpにページングチュートリアルを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。