Symfony 2のベストプラクティスに関する質問があります。申し訳ありませんが、少し曖昧で主観的です。私は私の質問を以下のようにまとめることができると思います:Symfonyのベストプラクティス。クエリはリポジトリまたはサービスにあるべきですか?
"リポジトリはいつも問い合わせのために適切な場所ですか?"
今は私の主義のクエリのほとんどをエンティティリポジトリに入れています。私のコントローラのアクションのほとんどは、エンティティまたはエンティティのコレクションのクエリのような典型的なことを行い、例外を投げたり、その結果に応じてリダイレクトしたり、そうでなければ1つ以上のエンティティを更新したりします。ほとんどのアクションは、standard - > find、 - > findByなどのクエリで効率的に行うよりも複雑です。ほとんどの場合、結合が必要です。クエリに複数のエンティティが含まれている場合、どのリポジトリに入るべきかわからないことがあります。クエリのルートエンティティがあると思いますが...時には結合エンティティのデータがより重要で関連性が高いので間違っていると感じますルートエンティティのリポジトリに格納します。
これは問題なく動作していますが、リポジトリ内ではほとんど同じだがわずかに異なるクエリに遭遇する傾向があります。名前を思いついて、それぞれが何をしているのかを正確に把握すると、混乱し退屈になる可能性があります。これらのクエリの大半は、同じコントローラ内の1つまたは2つ(たいていはあまり使用されないことが多い)のコントローラアクションによってのみ使用されます。私はあまりにも多くの専門的な、まれに使用されたもので私のリポジトリを混乱させているように感じる。
最も単純なアクション以外は、オブジェクトやサービスにカプセル化する必要があります。だから、私はリポジトリではなくサービスで直接多くの質問をし始めました。アクションを一箇所で見るのは簡単です。これは大丈夫でしょうか?
コントローラーは、アプリケーションの世界とhttpの世界の間の本当に薄いレイヤーでなければならず、常にリポジトリーにクエリーを置くことを推奨します。 –