/**
  * @param Connection $connection
  *
  * @return Configuration
  */
 public function make(Connection $connection)
 {
     $configuration = new Configuration($connection);
     $configuration->setName($this->config->get('migrations.name', 'Doctrine Migrations'));
     $configuration->setMigrationsNamespace($this->config->get('migrations.namespace', 'Database\\Migrations'));
     $configuration->setMigrationsTableName($this->config->get('migrations.table', 'migrations'));
     $configuration->getConnection()->getConfiguration()->setFilterSchemaAssetsExpression($this->config->get('migrations.schema.filter', '/^(?).*$/'));
     $configuration->setNamingStrategy($this->container->make($this->config->get('migrations.naming_strategy', DefaultNamingStrategy::class)));
     $configuration->setMigrationFinder($configuration->getNamingStrategy()->getFinder());
     $directory = $this->config->get('migrations.directory', database_path('migrations'));
     $configuration->setMigrationsDirectory($directory);
     $configuration->registerMigrationsFromDirectory($directory);
     return $configuration;
 }
Example #2
0
 /**
  * @param Configuration $configuration
  * @param array         $queries
  *
  * @return string
  */
 public function build(Configuration $configuration, array $queries = [])
 {
     $platform = $configuration->getConnection()->getDatabasePlatform()->getName();
     $code = [];
     foreach ($queries as $query) {
         if (stripos($query, $configuration->getMigrationsTableName()) !== false) {
             continue;
         }
         $code[] = sprintf("\$this->addSql(%s);", var_export($query, true));
     }
     if (!empty($code)) {
         array_unshift($code, sprintf("\$this->abortIf(\$this->connection->getDatabasePlatform()->getName() != %s, %s);", var_export($platform, true), var_export(sprintf("Migration can only be executed safely on '%s'.", $platform), true)), "");
     }
     return implode("\n", $code);
 }