public function clearDatabase() { $schemaManager = $this->adapter->getSchemaManager(); foreach ($schemaManager->listTables() as $table) { foreach ($table->getForeignKeys() as $fk) { $schemaManager->dropForeignKey($fk->getName(), $table->getName()); } } foreach ($schemaManager->listTables() as $table) { $this->adapter->executeQuery("drop table {$table->getName()}"); } // sqlite has no sequences if ($schemaManager->getDatabasePlatform()->getName() == 'sqlite') { return; } foreach ($schemaManager->listSequences() as $sequence) { $schemaManager->dropSequence($sequence->getName()); } }
protected function execute(InputInterface $input, OutputInterface $output) { $fs = new Filesystem(); $schema = $this->application->getStorage()->getSchema(); // create.sql $dbalToSchema = $this->dbalConverter->convert($schema); $dbalFromSchema = $schema = new \Doctrine\DBAL\Schema\Schema(); $this->generator->setToSchema($dbalToSchema); $this->generator->setFromSchema($dbalFromSchema); $queries = $this->generator->migrate(); $debug = $input->getArgument('debug') == true; $create = $this->application->getProject()->getPath('build sql create.sql'); if ($debug) { echo "- build create.sql" . PHP_EOL; } $output->writeln('Create ' . $create); $fs->dumpFile($create, implode(";\n", $queries) . ';'); // migrate.sql $dbalFromSchema = $this->dbal->getSchemaManager()->createSchema(); $this->generator->setFromSchema($dbalFromSchema); $queries = $this->generator->migrate(); $migrate = $this->application->getProject()->getPath('build sql migrate.sql'); if ($debug) { echo "- build migrate.sql" . PHP_EOL; } $output->writeln('Create ' . $migrate); $fs->dumpFile($migrate, implode(";\n", $queries) . (count($queries) ? ';' : '')); if (!$debug) { echo implode(";\n", $queries) . ';'; } if ($input->getOption('test') != true) { foreach ($queries as $query) { $this->dbal->executeQuery($query); } if ($input->getOption('commit') == true) { $this->dbal->commit(); } } }