1

Тема: Repository and Service layer

Добрый день. Разрабатываю проект на симфони (возможно вопрос не сильно касается самого симфони, но всё же). В нашем проекте имеется сервисный слой, который занимается бизнес логикой, есть репозитории. И вопрос состоит в том где правильнее писать сложные запросы.
К примеру есть таблица книг, есть таблица авторов. У каждой книги может быть несколько авторов и у каждого автора может быть несколько книг, имеем связку многие ко многим.
К примеру нам необходимо выбрать все книги по дате публикации и по авторам. Где лучше делать подобные методы? В репозитории либо в сервисном слое? Либо Ваш вариант ответа.
Заранее благодарен )

2 Отредактировано ta1isman (2016-06-08 16:37:29)

Re: Repository and Service layer

Я пишу в репозитории. И везде потом работаю с методами из репозитория.

Форум сообщества - не место для любой политической агитации...
Хотите выражать свои политические взгляды - переименуйте его в форум Васи Пупкина,
и высказывайтесь от своего имени, а не от имени всего сообщества.
PS: это моя гражданская позиция )

3

Re: Repository and Service layer

Сервисный слой ничего не должен знать про запросы (в контексте хранилища, будь это ORM или чистый sql). Для этого собственно и существуют репозитарии, чтобы работать с хранилищем, предоставляя бизнес-слою готовый набор методов для обслуживания его потребностей.
В совсем уж навороченном случае (например, когда в запросах десятки параметров/фильтров и много вариаций, или просто маєте час та натхнення) сервисный слой может формировать «запрос» в виде отдельного объекта Criteria с параметрами и, опять же, передавать его в репозитарий, который будет формировать конечный запрос через ORM/конструктор sql запросов/ключ в nosql/любая-другая-хрень.