/** * @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; }
/** * @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); }