/**
  * {@inheritdoc}
  */
 public function register(Container $c)
 {
     $c['migrations.apps'] = function ($c) {
         $apps = new Container();
         foreach ($c['migrations.options'] as $key => $options) {
             $apps[$key] = function () use($c, $key, $options) {
                 $db = $c['dbs'][$key];
                 return $c['migrations.create_app']($c['migrations.create_helpers']($db), $c['migrations.create_commands']($db, $options));
             };
         }
         return $apps;
     };
     $c['migrations.create_app'] = $c->protect(function ($helpers, $commands) {
         return ConsoleRunner::createApplication($helpers, $commands);
     });
     $c['migrations.create_helpers'] = $c->protect(function ($db) {
         return new HelperSet(['db' => new ConnectionHelper($db), 'dialog' => new QuestionHelper()]);
     });
     $c['migrations.create_commands'] = $c->protect(function ($db, $options) {
         $config = new Configuration($db);
         if (isset($options['namespace'])) {
             $config->setMigrationsNamespace($options['namespace']);
         }
         $config->setMigrationsDirectory($options['path']);
         $config->registerMigrationsFromDirectory($options['path']);
         if (isset($options['table'])) {
             $config->setMigrationsTableName($options['table']);
         }
         $commands = [new DiffCommand(), new ExecuteCommand(), new GenerateCommand(), new MigrateCommand(), new StatusCommand(), new VersionCommand()];
         foreach ($commands as $command) {
             $command->setMigrationConfiguration($config);
         }
         return $commands;
     });
 }
Example #2
0
 public function testCreateApplication()
 {
     $helperSet = new HelperSet();
     $app = ConsoleRunner::createApplication($helperSet);
     $this->assertInstanceOf('Symfony\\Component\\Console\\Application', $app);
     $this->assertSame($helperSet, $app->getHelperSet());
     $this->assertEquals(Version::VERSION, $app->getVersion());
 }
 private function registerEntityManager(Application $app, $serviceName, Connection $connection, Configuration $metadataConfig)
 {
     $app[$serviceName] = $app->share(function () use($app, $connection, $metadataConfig) {
         return EntityManager::create($connection, $metadataConfig);
     });
     // create a console for every manager
     $consoleServiceName = sprintf('%s.console', $serviceName);
     $app[$consoleServiceName] = $app->share(function () use($app, $serviceName) {
         return ConsoleRunner::createApplication(ConsoleRunner::createHelperSet($app[$serviceName]));
     });
 }
Example #4
0
//$diff->setMigrationConfiguration($configuration);
//$exec->setMigrationConfiguration($configuration);
//$gen->setMigrationConfiguration($configuration);
//$migrate->setMigrationConfiguration($configuration);
//$status->setMigrationConfiguration($configuration);
//$ver->setMigrationConfiguration($configuration);
//
//$cli = ConsoleRunner::createApplication($helperSet,[
//    $diff, $exec, $gen, $migrate, $status, $ver
//]);
//
//return $cli->run();
use Del\Common\Command\Migration;
use Doctrine\DBAL\Migrations\Configuration\Configuration;
use Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand;
use Doctrine\DBAL\Migrations\Tools\Console\Command\ExecuteCommand;
use Doctrine\DBAL\Migrations\Tools\Console\Command\GenerateCommand;
use Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand;
use Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand;
use Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Del\Common\ContainerService;
use Del\Common\Config\DbCredentials;
$credentials = new DbCredentials();
$container = ContainerService::getInstance()->setDbCredentials($credentials)->addEntityPath('src/Entity')->getContainer();
/** @var Doctrine\ORM\EntityManager $em*/
$em = $container['doctrine.entity_manager'];
$helperSet = ConsoleRunner::createHelperSet($em);
$helperSet->set(new \Symfony\Component\Console\Helper\DialogHelper(), 'dialog');
$cli = ConsoleRunner::createApplication($helperSet, []);
return $cli->run();
 /**
  * Create Doctrine's console application
  *
  * @return void
  */
 public function buildConsole($key = null)
 {
     $em = $this->proxyEntityManager->on($key);
     $helperSet = ConsoleRunner::createHelperSet($em);
     return $this->console = ConsoleRunner::createApplication($helperSet);
 }
Example #6
0
$dcConfig->setProxyNamespace('Orm\\Proxies');
$dcConfig->setEntityNamespaces(array('Orm\\Entity'));
$dcConfig->setMetadataDriverImpl(new \Doctrine\ORM\Mapping\Driver\StaticPHPDriver(realpath(BASE_PATH . '/library/Orm/Entity')));
// create db connection (use Zend_Db like at bootstrap)
require_once 'Zend/Db.php';
$dbConfig = $cmsConfig['db'];
$dbAdapter = \Zend_Db::factory($dbConfig['adapter'], $dbConfig);
$connectionOptions = array('pdo' => $dbAdapter->getConnection(), 'dbname' => $dbConfig['dbname']);
// create entity manager
$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $dcConfig, new Doctrine\Common\EventManager());
// Create OutputWriter
$output = new \Symfony\Component\Console\Output\ConsoleOutput();
$migrationOutputWriter = new \Doctrine\DBAL\Migrations\OutputWriter(function ($message) use($output) {
    $output->writeln($message);
});
// create migration commands
$migrationCommands = array(new \Doctrine\DBAL\Migrations\Tools\Console\Command\ExecuteCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\GenerateCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\LatestCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand(), new \Doctrine\DBAL\Migrations\Tools\Console\Command\DiffCommand());
// set config to migration commands
$configuration = new \Doctrine\DBAL\Migrations\Configuration\Configuration($em->getConnection(), $migrationOutputWriter);
$configuration->setMigrationsTableName('migrations');
$configuration->setMigrationsNamespace('Orm\\Migrations');
$configuration->setMigrationsDirectory(BASE_PATH . '/library/Orm/Migrations/');
$configuration->registerMigrationsFromDirectory(BASE_PATH . '/library/Orm/Migrations/');
foreach ($migrationCommands as $command) {
    $command->setMigrationConfiguration($configuration);
}
// Create and run ConsoleRunner
$helperSet = \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($em);
$helperSet->set(new \Symfony\Component\Console\Helper\DialogHelper(), 'dialog');
$cli = \Doctrine\ORM\Tools\Console\ConsoleRunner::createApplication($helperSet, $migrationCommands);
$cli->run(null, $output);
Example #7
0
use Doctrine\DBAL\Migrations\Tools\Console\Command\VersionCommand;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Del\Common\ContainerService;
use Del\Common\Config\DbCredentials;
$credentials = new DbCredentials();
$container = ContainerService::getInstance()->setDbCredentials($credentials)->addEntityPath('src/Entity')->getContainer();
// Fetch the entity Manager
$em = $container['doctrine.entity_manager'];
// Create the helperset
$helperSet = ConsoleRunner::createHelperSet($em);
$helperSet->set(new \Symfony\Component\Console\Helper\DialogHelper(), 'dialog');
/** Migrations setup */
$configuration = new Configuration($em->getConnection());
$configuration->setMigrationsDirectory('migrations');
$configuration->setMigrationsNamespace('migrations');
$configuration->setMigrationsTableName('Migration');
//$delmigrate = new Migration();
$diff = new DiffCommand();
$exec = new ExecuteCommand();
$gen = new GenerateCommand();
$migrate = new MigrateCommand();
$status = new StatusCommand();
$ver = new VersionCommand();
$diff->setMigrationConfiguration($configuration);
$exec->setMigrationConfiguration($configuration);
$gen->setMigrationConfiguration($configuration);
$migrate->setMigrationConfiguration($configuration);
$status->setMigrationConfiguration($configuration);
$ver->setMigrationConfiguration($configuration);
$cli = ConsoleRunner::createApplication($helperSet, [$diff, $exec, $gen, $migrate, $status, $ver]);
return $cli->run();
 /**
  * Execute the Doctrine CLI tool.
  *
  * @param array $command The Doctrine command to be executed
  *
  * @return string The commands output
  */
 protected function doDoctrine(array $command = array())
 {
     try {
         // create a local naming directory instance
         /** \AppserverIo\Psr\Naming\NamingDirectoryInterface $namingDirectory */
         $namingDirectory = $this->getNamingDirectory();
         // the first arguement has to be the application name
         $applicationName = array_shift($command);
         // try to load the application
         /** \AppserverIo\Psr\Application\ApplicationInterface $application */
         $application = $namingDirectory->search(sprintf('php:global/%s/env/ApplicationInterface', $applicationName));
         // the second arguement has to be the persistence unit name
         $persistenUnitName = array_shift($command);
         // try to load the application's entity manager
         /** \Doctrine\ORM\EntityManagerInterface $entityManager */
         $entityManager = $application->search($persistenUnitName);
         // initialize the helper set with the entity manager instance
         /** \Symfony\Component\Console\Helper\HelperSet $helperSet */
         $helperSet = ConsoleRunner::createHelperSet($entityManager);
         // create the Symfony Console application
         /** \Symfony\Component\Console\Application $app */
         $app = \Doctrine\ORM\Tools\Console\ConsoleRunner::createApplication($helperSet);
         $app->setAutoExit(false);
         // register the applications class loaders
         $application->registerClassLoaders();
         // as Doctrine CLI uses Symfony Console component, we've to simulate the commandline args
         $argv = array('doctrine');
         $argv = array_merge($argv, $command);
         // create a new instance of the commandline args
         $argvInput = new \Symfony\Component\Console\Input\ArgvInput($argv);
         // run the Symfony Console application
         $app->run($argvInput, $buffer = new BufferedOutput());
         // log a debug message with the output
         $this->getSystemLogger()->debug($result = $buffer->fetch());
         // return the output
         return $result;
     } catch (\Exception $e) {
         // log the exception
         $this->getSystemLogger()->error($e->__toString());
         // return the stack trace
         return $e->getMessage() . PHP_EOL;
     }
 }
Example #9
0
<?php

require __DIR__ . '/vendor/autoload.php';
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Jgut\Slim\Doctrine\EntityManagerBuilder;
$settings = (include 'app/settings.php');
$settings = $settings['settings']['doctrine'];
$entityManager = EntityManagerBuilder::build($settings);
$helperSet = ConsoleRunner::createHelperSet($entityManager);
$cli = ConsoleRunner::createApplication($helperSet, [new \Doctrine\ORM\Tools\Console\Command\GenerateEntitiesCommand()]);
return $cli->run();