Я определил несколько служб в Symfony 2, которые сохраняют изменения в базе данных.
Эти службы имеют экземпляр доктрины как одну из своих зависимостей:
a.given.service:
class: Acme\TestBundle\Service\AGivenService
arguments: [@doctrine]
Если у меня есть два разных сервиса, и оба они сохраняют объекты через EntityManager, который получается следующим образом из экземпляра доктрины:
$em = $doctrine->getEntityManager();
Будут ли все службы всегда использовать один и тот же EntityManager?
Если да, то как мне обработать сброс, если я хочу обработать все изменения в одной транзакции?
Я проверил это: http://docs.doctrine -project.org / projects / doctrine-orm / en / 2.0.x / reference / Transactions-and-concurrency.html и объясняет, как обрабатывать различные транзакции в запрос, но я хочу добиться, чтобы различные изменения в разных службах обрабатывались как одна транзакция.
Есть ли лучший подход для обработки нескольких изменений в разных сервисах?
На данный момент моя лучшая ставка в том, чтобы иметь внешний сервис, отвечающий за вызов других сервисов и последующую очистку. Внутренние службы сохраняют объекты, но не выполняют сброс.