2012-01-12 8 views
1

Doctrineリポジトリにはどのようにサービスを注入できますか?そうするのは良い考えですか?私は教義リポジトリのコンテナを認識させるべきか、関数の引数でサービスを渡すべきですか?Doctrineリポジトリでのサービスの使用

たとえば、クエリをページングする「knp_pager」というサービスを使用したいとします。私は記事リポジトリのgetArticleList()関数で利用できるようにしたいので、ページされた結果を返すことができます。

答えて

0

あなたのリポジトリからサービスを定義することができます。symfony 2のウェブサイトにある料理レシピがあります。その後、セッターを使用して他のサービスを注入し、コンテナ構成でそれらを配線することができます。

とにかく、複雑な操作で抽象度が必要な場合は、できるだけ単純なリポジトリクラス(一般的なデータアクセスのみを提供する必要があります)を他のサービスに注入しようとします。

2

IMHO、knp_pagerサービスをあなたのリポジトリに挿入するのは良い考えではありません。リポジトリがクエリに改ページするのは、その責任ではありません。あなたのクエリを制限するための

、私はknp_pagerによって生成することができるリポジトリメソッドにオプションのoffset &オプションlengthを渡します。リポジトリの責任は尊重され、クエリを簡単に制限することができます。

+1

+1懸念の分離を保つため。 –

関連する問題