Mam pytanie dotyczące najlepszych praktyk w Symfony 2. Przepraszam, jeśli jest to trochę niejasne i subiektywne. Zgaduję, że mogę podsumować moje pytanie jako:Najlepsze praktyki w Symfony. Czy zapytania powinny znajdować się w repozytoriach lub usługach?
"Czy repozytoria zawsze są odpowiednim miejscem na zapytania?".
W tej chwili umieszczam większość moich zapytań doktrynalnych w repozytoriach jednostek. Większość moich działań kontrolera wykonuje typowe czynności, takie jak zapytanie o encję lub kolekcję podmiotów, wyrzuca wyjątek lub przekierowanie w zależności od wyniku, w przeciwnym razie aktualizuje jeden lub więcej podmiotów. Większość działań jest bardziej złożona, niż można zrobić wydajnie za pomocą zapytań standard -> find, -> findBy itp. Większość wymaga złączeń. Kiedy kwerenda zawiera wiele elementów, czasami nie jestem pewien, które repozytorium powinno nawet wejść. Domyślam się, że istnieje element główny kwerendy, ale ... czasami dane z połączonych encji są ważniejsze i trafniejsze, więc czuje się źle umieścić go w repozytorium jednostki głównej.
To działa dobrze, ale zazwyczaj mam w repozytoriach wiele niemal identycznych, ale nieco odmiennych zapytań. Wymyślanie nazwisk i śledzenie tego, co każdy robi, może stać się mylące i nużące. Większość tych zapytań jest używana tylko przez jedno lub dwa (często rzadko używane) działania kontrolera w tym samym kontrolerze. Czuję, że zaśmiecam moje repozytoria zbyt dużą ilością specjalistycznych, rzadko używanych rzeczy.
Wygląda na to, że wszystkie najprostsze czynności należy zamknąć w obiekcie lub usłudze. Zacząłem więc wykonywać wiele moich zapytań bezpośrednio w usłudze, a nie w repozytorium. Łatwo spojrzeć na akcję w jednym miejscu. Czy to jest dobra praktyka?
Kontroler powinien być naprawdę cienką warstwą między światem aplikacji a światem http i polecam zawsze umieszczać zapytania w repozytoriach. –