* (c) Doctrine Project, Benjamin Eberlei * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Doctrine\Bundle\MigrationsBundle\Command; use Doctrine\Bundle\DoctrineBundle\Command\Proxy\DoctrineCommandHelper; use Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand; use Doctrine\DBAL\Sharding\PoolingShardConnection; use LogicException; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Command for generate migration classes by comparing your current database schema * to your mapping information. * * @author Fabien Potencier * @author Jonathan H. Wage */ class MigrationsDiffDoctrineCommand extends DiffCommand { protected function configure() { parent::configure(); $this ->setName('doctrine:migrations:diff') ->addOption('em', null, InputOption::VALUE_OPTIONAL, 'The entity manager to use for this command.') ->addOption('shard', null, InputOption::VALUE_REQUIRED, 'The shard connection to use for this command.') ; } public function execute(InputInterface $input, OutputInterface $output) { DoctrineCommandHelper::setApplicationEntityManager($this->getApplication(), $input->getOption('em')); if ($input->getOption('shard')) { $connection = $this->getApplication()->getHelperSet()->get('db')->getConnection(); if (!$connection instanceof PoolingShardConnection) { throw new LogicException(sprintf("Connection of EntityManager '%s' must implements shards configuration.", $input->getOption('em'))); } $connection->connect($input->getOption('shard')); } $configuration = $this->getMigrationConfiguration($input, $output); DoctrineCommand::configureMigrations($this->getApplication()->getKernel()->getContainer(), $configuration); return parent::execute($input, $output); } }