Что заставляет вас думать, что ваш уровень обслуживания является внешним для вашей модели?Это не так.Фактически, это центральная часть вашей модели, наряду с сущностями, репозиториями и т. Д.
Если вы используете Doctine2, вам понадобится сервисный уровень.Одна из причин заключается в том, что вы не хотите, чтобы ваши сущности знали о EntityManager (ухудшает тестируемость).Другая причина заключается в том, что вы также не хотите, чтобы ваши контроллеры управляли EM (это не работа контроллеров, чтобы знать о постоянстве).
Обычно я использую архитектуру, в которой сервисный уровень является интерфейсом контроллера с моделью.Уровень обслуживания предоставляет функции, которые работают с объектами (либо принимая их в качестве параметров, либо возвращая их, либо и то, и другое).Постоянство сущностей скрыто сервисным уровнем.Либо класс обслуживания управляет EM и самими репозиториями, либо делегирует его другому коду, который контроллер никогда не узнает, существует.
Таким образом, уровень обслуживания предоставляет API-интерфейс, который контроллеры могут использовать для управления вашими бизнес-данными.