К примеру у меня есть модель Cards и CardTransactions
DB::transaction - Гарантирует мне откат новой транзакции если при списании произошла ошибка. И я могу у себя в контроллере (или правильней в сервисе) обернуть в бд транзакцию следующие шаги
- Добавление новой CardTransaction
- Уменьшить баланс карты
Обеспечивает ли откат транзакции Observer?
К примеру у меня будет TransactionObserver created() который будет списывать баланс карты, когда произошло событие создания CardTransaction. Но в случае ошибки в методе обсервера я ожидаю что сохранение новой CardTransaction будет отменено.
JhaoDaAlex Wells Я с вами запутался) JhaoDa Я не понял про а) и б), но походу б). Когда у меня происходит создание одной сущности мне нужно сохранить другую, но так чтобы при ошибки сохранении другой был откат первой. Типично я могу это обернуть в транзакцию. Но Observer для моей задачи выглядит лучше. Если Obsever слушает создание первой сущности, и в коде метода обсервера произойдет ошибка, первая сущность при это будет создана или нет?
Владимир, если ты сам стартанул транзакцию, сохранил модель, сработал обсервер, но в нём вылетело исключение, то ларавел откатит транзакцию. Самостоятельно же ларавел транзакций перед сохранением моделей не стартует.