2012-12-05 6 views
5

私はSymfonyでDoctrine ORMとページネーションメソッドを使いたいと思います。 KnpPaginatorBundleはシンプルで使いやすいです。また、クエリを簡単に再利用してテストできるため、Doctrineリポジトリも使用しています。symfony 2でdoctrineを効率的に改ページするにはどうすればよいですか?

このバンドルは、私が見つけたものと同じように機能します。パラメータとしてクエリビルダが必要です。各リポジトリにパラメータ(またはヌル)としてpaginatorを機能させるよりも、これを行うより良い方法はありますか?私はすべてのクエリの結果をページングしたくないので、説明されたソリューションが最高だとは思っていません。私はsugestionsを探しています。

+3

パフォーマンス面では、結果をオブジェクトにマッピングするオーバーヘッドを回避し、ネットワークトラフィックを減らすことができ、データベースサーバーは多数のレコードを読み書きする必要がありません。どのようにそのバンドルが動作するのか分かりませんが、どのクエリが実行されたかを確認して、クエリ自体でページネーションが実行されているかどうかを確認できます。もしそうであれば、あなたは行くのが良いです。何度も同じクエリを作成したくない場合は、リポジトリで定義します。http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes – Xocoatzin

+0

データベースレベルでページを設定する場合は、すべてのレコードを数えて、そこにページがいくつあるかを計算する必要があります。このためにキャッシュを使用したり、テーブルの長さを追跡したりして、これを避けることができます。 – Xocoatzin

+0

https://github.com/KnpLabs/knp-components –

答えて

2

は、私はそれを行うための2つのバンドルを知っている:

どちらのORM /クエリまたはORM/QueryBuilder(およびそれ以上)のページ付けすることができます。

+0

私は本当に2番目のものに興味がありますが、PostgreSQLの統合が必要です。バンドルでサポートされていないのはなぜですか? – sentenza

関連する問題