PHP Classes

File: src/Silex/Doctrine/DBAL/Tools/Console/Command/CreateSchemaCommand.php

Recommend this page to a friend!
  Classes of Rafael Espinosa   Silex Enhanced   src/Silex/Doctrine/DBAL/Tools/Console/Command/CreateSchemaCommand.php   Download  
File: src/Silex/Doctrine/DBAL/Tools/Console/Command/CreateSchemaCommand.php
Role: Application script
Content type: text/plain
Description: Application script
Class: Silex Enhanced
Silex with custom services providers.
Author: By
Last change:
Date: 8 years ago
Size: 2,672 bytes
 

Contents

Class file image Download
<?php
/**
 * PHP version ~5.5
 *
 * @category Command
 * @package Fluency\Silex\Doctrine\DBAL\Tools\Console\Command
 * @author Rafael Ernesto Espinosa Santiesteban <ralphlnx@gmail.com>
 * @license MIT <http://www.opensource.org/licenses/mit-license.php>
 * @link http://fluency.inc.com
 */

namespace Fluency\Silex\Doctrine\DBAL\Tools\Console\Command;

use
Fluency\Silex\Doctrine\DBAL\Schema\ConfigurableSchema;
use
Symfony\Component\Console\Input\InputInterface;
use
Symfony\Component\Console\Output\OutputInterface;

/**
 * Class CreateSchemaCommand
 * @category Command
 * @package Fluency\Silex\Doctrine\DBAL\Tools\Console\Command
 * @author Rafael Ernesto Espinosa Santiesteban <ralphlnx@gmail.com>
 * @license MIT <http://www.opensource.org/licenses/mit-license.php>
 * @link http://fluency.inc.com
 */
class CreateSchemaCommand extends AbstractDBALCommand
{
   
/**
     * Configures command
     *
     * @return void
     */
   
protected function configure()
    {
       
parent::configure();

       
$this->setName('dbal:schema:create')
            ->
setDescription('Creates the configured database schema')
            ->
setHelp(
                <<<EOT
The <info>dbal:schema:create</info> command creates the default
connections database:

<info>php app/console dbal:schema:create</info>

You can also optionally specify the name of a connection to create the
schema for:

<info>php app/console dbal:schema:create --connection=default</info>
EOT
            );
    }

   
/**
     * Executes command
     *
     * @param InputInterface $input Command input
     * @param OutputInterface $output Console output
     *
     * @throws \Exception
     *
     * @return void
     */
   
protected function execute( InputInterface $input, OutputInterface $output )
    {
       
parent::execute($input, $output);

        if (
$this->getContainer()->offsetExists('dbs')) {
           
$this->setConnection(
               
$this->getContainer()['dbs'][$input->getOption('connection')]
            );
        }

       
$schema = new ConfigurableSchema();
       
$config = $this->getContainer()['config']['dbal_schema']
            [
$input->getOption('connection')];

        if (isset(
$config['tables'])) {
           
$schema->createTablesFromConfig($config['tables']);
        }

       
$schema->bundleMultipleSchemas($config);

       
$sql = $schema->toSql($this->getConnection()->getDatabasePlatform());

        foreach ((array)
$sql as $query) {
           
$output->write(sprintf('Executing <info>%s</info>', $query));
           
$this->getConnection()->executeUpdate($query);
           
$output->write(' OK' . "\n");
        }
    }
}