Как создать изменения в двух таблицах БД за один запрос на эндпоинт? Рефакторинг
Код написан на Laravel.
Есть две сущности: проект и юзер. При создании юзером проекта должна создаваться новая запись в бд о проекте и меняться два поля в таблице юзера. Функционал реализовал так: эндпоинт post '/api/projects/' делает запрос в StoreController который в свою очередь вызывает метод класса сервиса store, а внутри я уже в транзакции создаю запись о проекте в таблице проектов и в этой же транзакции изменяю поля в таблице юзеров. Вроде все хорошо.
НО!
Я изменяю в одном методе сразу две таблицы бд, что вообще атата как нехорошо.
Вопрос: как сделать правильно и хорошо, по всем солидам и бэст практис, как завещал дядя Боб?
Есть три варианта решения, которые я вижу:
- Оставить все как есть, но внутренний сноб не даст спать по ночам.
- Запускать событие внутри транзакции, но я не знаю как себя поведет событие внутри транзакции. Например возможен ли такой вариант, что запись о проекте внутри транзакции создастся, а на обработке события база упадет/откажет/крякнет/sqlerror и запись о проекте будет, а изменений в юзере нет?
- Отлавливать eloquent события
createdбд при создании записи о проекте и в обработчике изменять юзера внутри новой транзакции. Но вопрос всплывший ранее имеет место и здесь.
Прошу помочь, внутренний сноб не дает спать вторые сутки.
Спасибо.