Использование сервисов в репозиториях Doctrine - PullRequest
1 голос
/ 12 января 2012

Как бы я внедрял сервисы в репозитории Doctrine?Это хорошая идея, чтобы сделать это?Должен ли я сделать контейнер хранилища доктрин осведомленным или я должен передавать службы в аргументах функции?

Например: я хочу использовать службу с именем "knp_pager", которая разбивает запросы на страницы.Я хочу, чтобы он был доступен в функции getArticleList () моего репозитория Article, чтобы я мог вернуть постраничный результат.

Ответы [ 2 ]

2 голосов
/ 13 января 2012

ИМХО, вставлять сервис knp_pager в ваш репозиторий не очень хорошая идея. Репозиторий не отвечает за разбиение запроса на страницы.

Для ограничения вашего запроса я бы передал необязательный offset & необязательный length методу репозитория, который может быть сгенерирован knp_pager. Таким образом, ответственность за хранилище уважается, и вы можете легко ограничить свой запрос.

0 голосов
/ 12 января 2012

Вы можете определить сервисы из своего репозитория, об этом есть рецепт кулинарной книги на сайте Symfony 2. Затем вы можете внедрить другие сервисы, используя сеттеры и подключив их в конфигурации контейнера.

В любом случае, я бы постарался сохранить классы репозитория настолько простыми, насколько это возможно (скажем, они должны обеспечивать только общий доступ к данным) и внедрить их в другие сервисы, если мне нужно больше абстракций для сложных операций.

...