私が理解しているように、最適なコード スタイルは、複雑な SQL/DQL クエリをエンティティ リポジトリに配置することです。
たとえば、「ニュース」という名前のエンティティがあります。「NewsRepository」という名前の独自のエンティティ リポジトリがあります。
コントローラーには、次のコードがあります。
/**
* @Route("/news", name="news")
*/
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$paginator = $this->get('knp_paginator');
$news = $paginator->paginate(
$em->createQuery('SELECT n FROM AppBundle:News n'),
$request->query->getInt('page', 1),
10
);
return $this->render('app/news/list.html.twig', array(
'news' => $news,
));
}
ここで、さらに機能を追加したいと思います (フィルタリング、並べ替えなど)。これは、クエリを任意のサービスまたはエンティティ リポジトリに移動する必要があると思うためです。しかし、最適なコーディング スタイルとはどのようなものでしょうか?
(そして、フィルタリングを簡単に追加したり、並べ替えたりするための優れた一般的なアイデアを誰かが持っていますか?)