connection->transactional(function (Connection $conn): void { foreach ($this->vienEntityInfoProviders as $viewProvider) { foreach ($this->createOrReplaceViewSQL($viewProvider, $viewProvider->getViewName()) as $sql) { $this->logger->debug("Will execute create view sql", ['sql' => $sql]); $this->logger->debug($sql); $conn->executeQuery($sql); } } }); } /** * @return array */ private function createOrReplaceViewSQL(ViewEntityInfoProviderInterface $viewProvider, string $viewName): array { return [ "DROP VIEW IF EXISTS {$viewName}", sprintf("CREATE OR REPLACE VIEW {$viewName} AS %s", $viewProvider->getViewQuery()) ]; } }