. */ namespace Doctrine\DBAL\Tools\Console\Command; use Symfony\Components\Console\Input\InputArgument, Symfony\Components\Console\Input\InputOption, Symfony\Components\Console; /** * Task for executing arbitrary SQL that can come from a file or directly from * the command line. * * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.doctrine-project.org * @since 2.0 * @version $Revision$ * @author Benjamin Eberlei * @author Guilherme Blanco * @author Jonathan Wage * @author Roman Borschel */ class RunSqlCommand extends Console\Command\Command { /** * @see Console\Command\Command */ protected function configure() { $this ->setName('dbal:run-sql') ->setDescription('Executes arbitrary SQL directly from the command line.') ->setDefinition(array( new InputArgument('sql', InputArgument::REQUIRED, 'The SQL statement to execute.'), new InputOption('depth', null, InputOption::PARAMETER_REQUIRED, 'Dumping depth of result set.', 7) )) ->setHelp(<<getHelper('db')->getConnection(); if (($sql = $input->getArgument('sql')) === null) { throw new \RuntimeException("Argument 'SQL' is required in order to execute this command correctly."); } $depth = $input->getOption('depth'); if ( ! is_numeric($depth)) { throw new \LogicException("Option 'depth' must contains an integer value"); } if (preg_match('/^select/i', $sql)) { $stmt = $conn->execute($sql); $resultSet = $stmt->fetchAll(\Doctrine\DBAL\Connection::FETCH_ASSOC); } else { $resultSet = $em->getConnection()->executeUpdate($sql); } \Doctrine\Common\Util\Debug::dump($resultSet, (int) $depth); } }