Ну, начал бы с того, что упростил сам код (если много конструкций if).
Но одно с решений - использовать try/catch, а перед этим - делать транзакцию через Yii::$app->db->beginTransaction();
Если возникла ошибка - throw new MyException(); и в блоке catch - Yii::$app->db->rollBack();
Если все в порядке - в конце try добавляете Yii::$app->db->commit();
Вот, посмотрите в документации, там есть похожий пример кода
www.yiiframework.com/doc-2.0/yii-db-connection.html