Как покрыть транзакцией afterAction вместе с самим action в Yii2?
Есть базовый REST контроллер (свои контроллер наследник yii-шного), в котором есть beforeAction и afterAction. В afterAction есть логика записи лога в историю изменений (таблица в БД). При запросе DELETE что-то там в afterAction происходит ошибка (предположим). Требуется откатить изменение, которое произошло в DeleteAction при запросе. То есть, обеспечить полный откат всего запроса по БД. Как это сделать?
Сейчас есть в beforeAction:
$transaction = Yii::$app->db->beginTransaction();
$this->on(self::EVENT_AFTER_ACTION, [$transaction, 'commit']);
return parent::beforeAction($action);
В afterAction:
History::write(
$this->historyTable,
$entityId,
$action->id,
$historyData
);
DeleteAction - без изменений.
Получается, что если в afterAction базового класса (кастомный) случился exception, то запись удаляется, но ответ будет 500 с ошибкой. Нужно, чтобы запись не удалялась.