setDescription('Drop a given database or the default one.') ->addOption('force', null, InputOption::VALUE_NONE, 'Set this parameter to execute this action.') ->addOption('connection', null, InputOption::VALUE_OPTIONAL, 'Set this parameter to define a connection to use') ->setHelp(<<propel:database:drop command will drop your database. php app/console propel:database:drop The --force parameter has to be used to actually drop the database. The --connection parameter allows you to change the connection to use. The default connection is the active connection (propel.dbal.default_connection). EOT ) ->setName('propel:database:drop'); } /** * @see Command * * @throws \InvalidArgumentException When the target directory does not exist */ protected function execute(InputInterface $input, OutputInterface $output) { if ($input->getOption('force')) { if ('prod' === $this->getApplication()->getKernel()->getEnvironment()) { $this->writeSection($output, 'WARNING: you are about to drop a database in production !', 'bg=red;fg=white'); if (false === $this->askConfirmation($output, 'Are you sure ? (y/n) ', false)) { $output->writeln('Aborted, nice decision !'); return -2; } } list($name, $config) = $this->getConnection($input, $output); $dbName = $this->parseDbName($config['connection']['dsn']); if (null === $dbName) { return $output->writeln('No database name found.'); } else { $query = 'DROP DATABASE '. $dbName .';'; } try { $connection = \Propel::getConnection($name); $statement = $connection->prepare($query); $statement->execute(); $output->writeln(sprintf('Database %s has been dropped.', $dbName)); } catch (\Exception $e) { $this->writeSection($output, array( '[Propel] Exception caught', '', $e->getMessage() ), 'fg=white;bg=red'); } } else { $output->writeln('You have to use the "--force" option to drop the database.'); } } }