大きなクエリ (クエリ ビルダー内) と多くの左結合があります。そのため、コメントやタグなどを含む記事を取得します。次のdqlがあるとしましょう:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
ここで、データベースに 100 件を超えるブログ投稿があり、最初の 10 件のみが必要であるとしますが、それらの 10 件のすべてのコメントと、存在する場合はすべてのタグが必要です。setMaxResults を使用すると、行が制限されます。したがって、最初の 2 つの投稿を取得することができますが、最後の投稿にはコメントまたはタグの一部がありません。したがって、フォローは機能しません。
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
doctrine2.2 に同梱されているほとんど文書化されていないPagination Solution を使用しても、非常に遅いため、実際には機能しません。すべてのデータをロードすることもできます。
Stackoverflow Articleのソリューションを試しましたが、その記事にもまだベスト プラクティスがなく、提示されたソリューションは非常に遅いです。
これを行う方法に関するベストプラクティスはありませんか? プロダクションモードで Doctrine2.2 を使っている人はいませんか?