Laravel начать транзакцию и закончить в разных местах?
Здравствуйте! Есть два сервиса, ServiceOne и ServiceTwo. Оба синглтоны.
Из контроллера я дергаю $injectedServiceTwo->someMethod([1, 2, 3, 4]), в котором нужно сделать какие-то действия и дойти до транзакции. При этом важно, что-бы один из запросов транзакции был в ServiceOne, так как именно он отвечает за тот запрос.
Как это правильно реализовать?
Есть вариант с DB::beginTransaction(), DB::commit() - но это добавит кучу лишний try catch, да и как-то не правильно.
Может есть что-то лучше, чем это? Заранее спасибо!
Если у вас такие сложности возникают, это признак того, что вы что-то неправильно спроектировали/накодили. Советую вам еще раз над всем подумать и переписать то, что у вас есть.
DB::transaction(function () {
// do somethimg...
// Если внутри функции будет брошено исключение, то произойдет автоматический вызов DB::rollback().
// Если же все пройдет "как надо", будет произведен автоматический коммит.
});