Returns the migration table name
public getMigrationsTableName ( ) : string | ||
return | string | $migrationsTableName The migration table name |
public function getMigrationsInfos() { $numExecutedUnavailableMigrations = count($this->executedUnavailableMigrations); $numNewMigrations = count(array_diff($this->availableMigrations, $this->executedMigrations)); $infos = ['Name' => $this->configuration->getName() ? $this->configuration->getName() : 'Doctrine Database Migrations', 'Database Driver' => $this->configuration->getConnection()->getDriver()->getName(), 'Database Name' => $this->configuration->getConnection()->getDatabase(), 'Configuration Source' => $this->configuration instanceof AbstractFileConfiguration ? $this->configuration->getFile() : 'manually configured', 'Version Table Name' => $this->configuration->getMigrationsTableName(), 'Version Column Name' => $this->configuration->getMigrationsColumnName(), 'Migrations Namespace' => $this->configuration->getMigrationsNamespace(), 'Migrations Directory' => $this->configuration->getMigrationsDirectory(), 'Previous Version' => $this->getFormattedVersionAlias('prev'), 'Current Version' => $this->getFormattedVersionAlias('current'), 'Next Version' => $this->getFormattedVersionAlias('next'), 'Latest Version' => $this->getFormattedVersionAlias('latest'), 'Executed Migrations' => count($this->executedMigrations), 'Executed Unavailable Migrations' => $numExecutedUnavailableMigrations, 'Available Migrations' => count($this->availableMigrations), 'New Migrations' => $numNewMigrations]; return $infos; }
/** * Write a migration SQL file to the given path * * @param string $path The path to write the migration SQL file. * @param string $to The version to migrate to. * * @return boolean $written */ public function writeSqlFile($path, $to = null) { $sql = $this->getSql($to); $from = $this->configuration->getCurrentVersion(); if ($to === null) { $to = $this->configuration->getLatestVersion(); } $direction = $from > $to ? 'down' : 'up'; $this->outputWriter->write(sprintf("# Migrating from %s to %s\n", $from, $to)); $sqlWriter = new SqlFileWriter($this->configuration->getMigrationsTableName(), $path, $this->outputWriter); return $sqlWriter->write($sql, $direction); }
/** * Write a migration SQL file to the given path * * @param string $path The path to write the migration SQL file. * @param string $to The version to migrate to. * * @return boolean $written */ public function writeSqlFile($path, $to = null) { $sql = $this->getSql($to); $from = $this->configuration->getCurrentVersion(); if ($to === null) { $to = $this->configuration->getLatestVersion(); } $direction = $from > $to ? 'down' : 'up'; $string = sprintf("# Doctrine Migration File Generated on %s\n", date('Y-m-d H:i:s')); $string .= sprintf("# Migrating from %s to %s\n", $from, $to); foreach ($sql as $version => $queries) { $string .= "\n# Version " . $version . "\n"; foreach ($queries as $query) { $string .= $query . ";\n"; } if ($direction == "down") { $string .= "DELETE FROM " . $this->configuration->getMigrationsTableName() . " WHERE version = '" . $version . "';\n"; } else { $string .= "INSERT INTO " . $this->configuration->getMigrationsTableName() . " (version) VALUES ('" . $version . "');\n"; } } if (is_dir($path)) { $path = realpath($path); $path = $path . '/doctrine_migration_' . date('YmdHis') . '.sql'; } $this->outputWriter->write("\n" . sprintf('Writing migration file to "<info>%s</info>"', $path)); return file_put_contents($path, $string); }
/** * Write a migration SQL file to the given path * * @param string $path The path to write the migration SQL file. * @param string $direction The direction to execute. * * @return boolean $written */ public function writeSqlFile($path, $direction = 'up') { $queries = $this->execute($direction, true); $this->outputWriter->write("\n# Version " . $this->version . "\n"); $sqlQueries = [$this->version => $queries]; $sqlWriter = new SqlFileWriter($this->configuration->getMigrationsTableName(), $path, $this->outputWriter); return $sqlWriter->write($sqlQueries, $direction); }
private function _buildCodeFromSql(Configuration $configuration, array $sql) { $code = array(); foreach ($sql as $query) { if (strpos($query, $configuration->getMigrationsTableName()) !== false) { continue; } $code[] = "\$this->_addSql('" . $query . "');"; } return implode("\n", $code); }
/** * Write a migration SQL file to the given path * * @param string $path The path to write the migration SQL file. * @param string $direction The direction to execute. * * @return boolean $written */ public function writeSqlFile($path, $direction = self::DIRECTION_UP) { $queries = $this->execute($direction, true); if (!empty($this->params)) { throw MigrationException::migrationNotConvertibleToSql($this->class); } $this->outputWriter->write("\n-- Version " . $this->version . "\n"); $sqlQueries = [$this->version => $queries]; $sqlWriter = new SqlFileWriter($this->configuration->getMigrationsColumnName(), $this->configuration->getMigrationsTableName(), $path, $this->outputWriter); return $sqlWriter->write($sqlQueries, $direction); }
private function buildCodeFromSql(Configuration $configuration, array $sql) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = array("\$this->abortIf(\$this->connection->getDatabasePlatform()->getName() != \"{$currentPlatform}\", \"Migration can only be executed safely on '{$currentPlatform}'.\");", ""); foreach ($sql as $query) { if (strpos($query, $configuration->getMigrationsTableName()) !== false) { continue; } $code[] = "\$this->addSql(\"{$query}\");"; } return implode("\n", $code); }
public static function configureMigrations(ContainerInterface $container, Configuration $configuration) { if (!$configuration->getMigrationsDirectory()) { $dir = $container->getParameter('doctrine_migrations.dir_name'); if (!file_exists($dir)) { mkdir($dir, 0777, true); } $configuration->setMigrationsDirectory($dir); } else { $dir = $configuration->getMigrationsDirectory(); // class Kernel has method getKernelParameters with some of the important path parameters $pathPlaceholderArray = array('kernel.root_dir', 'kernel.cache_dir', 'kernel.logs_dir'); foreach ($pathPlaceholderArray as $pathPlaceholder) { if ($container->hasParameter($pathPlaceholder) && preg_match('/\\%' . $pathPlaceholder . '\\%/', $dir)) { $dir = str_replace('%' . $pathPlaceholder . '%', $container->getParameter($pathPlaceholder), $dir); } } if (!file_exists($dir)) { mkdir($dir, 0777, true); } $configuration->setMigrationsDirectory($dir); } if (!$configuration->getMigrationsNamespace()) { $configuration->setMigrationsNamespace($container->getParameter('doctrine_migrations.namespace')); } if (!$configuration->getName()) { $configuration->setName($container->getParameter('doctrine_migrations.name')); } // For backward compatibility, need use a table from parameters for overwrite the default configuration if (!$configuration->getMigrationsTableName() || !$configuration instanceof AbstractFileConfiguration) { $configuration->setMigrationsTableName($container->getParameter('doctrine_migrations.table_name')); } // Migrations is not register from configuration loader if (!$configuration instanceof AbstractFileConfiguration) { $configuration->registerMigrationsFromDirectory($configuration->getMigrationsDirectory()); } if ($container->hasParameter('doctrine_migrations.organize_migrations')) { $organizeMigrations = $container->getParameter('doctrine_migrations.organize_migrations'); switch ($organizeMigrations) { case Configuration::VERSIONS_ORGANIZATION_BY_YEAR: $configuration->setMigrationsAreOrganizedByYear(true); break; case Configuration::VERSIONS_ORGANIZATION_BY_YEAR_AND_MONTH: $configuration->setMigrationsAreOrganizedByYearAndMonth(true); break; case false: break; default: throw new InvalidConfigurationException('Unrecognized option "' . $organizeMigrations . '" under "organize_migrations"'); } } self::injectContainerToMigrations($container, $configuration->getMigrations()); }
public function getMigrationsInfos() { $formattedVersions = []; foreach (['prev', 'current', 'next', 'latest'] as $alias) { $version = $this->configuration->resolveVersionAlias($alias); if ($version === null) { if ($alias == 'next') { $formattedVersions[$alias] = 'Already at latest version'; } elseif ($alias == 'prev') { $formattedVersions[$alias] = 'Already at first version'; } } elseif ($version === '0') { $formattedVersions[$alias] = '<comment>0</comment>'; } else { $formattedVersions[$alias] = $this->configuration->getDateTime($version) . ' (<comment>' . $version . '</comment>)'; } } $numExecutedUnavailableMigrations = count($this->executedUnavailableMigrations); $numNewMigrations = count(array_diff($this->availableMigrations, $this->executedMigrations)); $infos = ['Name' => $this->configuration->getName() ? $this->configuration->getName() : 'Doctrine Database Migrations', 'Database Driver' => $this->configuration->getConnection()->getDriver()->getName(), 'Database Name' => $this->configuration->getConnection()->getDatabase(), 'Configuration Source' => $this->configuration instanceof AbstractFileConfiguration ? $this->configuration->getFile() : 'manually configured', 'Version Table Name' => $this->configuration->getMigrationsTableName(), 'Version Column Name' => $this->configuration->getMigrationsColumnName(), 'Migrations Namespace' => $this->configuration->getMigrationsNamespace(), 'Migrations Directory' => $this->configuration->getMigrationsDirectory(), 'Previous Version' => $formattedVersions['prev'], 'Current Version' => $formattedVersions['current'], 'Next Version' => $formattedVersions['next'], 'Latest Version' => $formattedVersions['latest'], 'Executed Migrations' => count($this->executedMigrations), 'Executed Unavailable Migrations' => $numExecutedUnavailableMigrations, 'Available Migrations' => count($this->availableMigrations), 'New Migrations' => $numNewMigrations]; return $infos; }
/** * Write a migration SQL file to the given path * * @param string $path The path to write the migration SQL file. * @param string $direction The direction to execute. * * @return boolean $written */ public function writeSqlFile($path, $direction = 'up') { $queries = $this->execute($direction, true); $string = sprintf("# Doctrine Migration File Generated on %s\n", date('Y-m-d H:i:s')); $string .= "\n# Version " . $this->version . "\n"; foreach ($queries as $query) { $string .= $query . ";\n"; } if ($direction == "down") { $string .= "DELETE FROM " . $this->configuration->getMigrationsTableName() . " WHERE version = '" . $this->version . "';\n"; } else { $string .= "INSERT INTO " . $this->configuration->getMigrationsTableName() . " (version) VALUES ('" . $this->version . "');\n"; } if (is_dir($path)) { $path = realpath($path); $path = $path . '/doctrine_migration_' . date('YmdHis') . '.sql'; } $this->outputWriter->write("\n" . sprintf('Writing migration file to "<info>%s</info>"', $path)); return file_put_contents($path, $string); }
public static function configureMigrations(ContainerInterface $container, Configuration $configuration) { if (!$configuration->getMigrationsDirectory()) { $dir = $container->getParameter('doctrine_migrations.dir_name'); if (!file_exists($dir)) { mkdir($dir, 0777, true); } $configuration->setMigrationsDirectory($dir); } else { $dir = $configuration->getMigrationsDirectory(); // class Kernel has method getKernelParameters with some of the important path parameters $pathPlaceholderArray = array('kernel.root_dir', 'kernel.cache_dir', 'kernel.logs_dir'); foreach ($pathPlaceholderArray as $pathPlaceholder) { if ($container->hasParameter($pathPlaceholder) && preg_match('/\\%' . $pathPlaceholder . '\\%/', $dir)) { $dir = str_replace('%' . $pathPlaceholder . '%', $container->getParameter($pathPlaceholder), $dir); } } if (!file_exists($dir)) { mkdir($dir, 0777, true); } $configuration->setMigrationsDirectory($dir); } if (!$configuration->getMigrationsNamespace()) { $configuration->setMigrationsNamespace($container->getParameter('doctrine_migrations.namespace')); } if (!$configuration->getName()) { $configuration->setName($container->getParameter('doctrine_migrations.name')); } // For backward compatibility, need use a table from parameters for overwrite the default configuration if (!$configuration->getMigrationsTableName() || !$configuration instanceof AbstractFileConfiguration) { $configuration->setMigrationsTableName($container->getParameter('doctrine_migrations.table_name')); } // Migrations is not register from configuration loader if (!$configuration instanceof AbstractFileConfiguration) { $configuration->registerMigrationsFromDirectory($configuration->getMigrationsDirectory()); } self::injectContainerToMigrations($container, $configuration->getMigrations()); }
/** * Returns PHP code for a migration file that "executes" the given * array of SQL statements. * * @param \Doctrine\DBAL\Migrations\Configuration\Configuration $configuration * @param array $sql * @return string */ protected function buildCodeFromSql(\Doctrine\DBAL\Migrations\Configuration\Configuration $configuration, array $sql) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = array('$this->abortIf($this->connection->getDatabasePlatform()->getName() != "' . $currentPlatform . '");', ''); foreach ($sql as $query) { if (strpos($query, $configuration->getMigrationsTableName()) !== false) { continue; } $code[] = '$this->addSql("' . $query . '");'; } return implode("\n", $code); }
private function buildCodeFromSql(Configuration $configuration, array $sql, $formatted = false, $lineLength = 120) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = []; foreach ($sql as $query) { if (stripos($query, $configuration->getMigrationsTableName()) !== false) { continue; } if ($formatted) { if (!class_exists('\\SqlFormatter')) { throw new \InvalidArgumentException('The "--formatted" option can only be used if the sql formatter is installed.' . 'Please run "composer require jdorn/sql-formatter".'); } $maxLength = $lineLength - 18 - 8; // max - php code length - indentation if (strlen($query) > $maxLength) { $query = \SqlFormatter::format($query, false); } } $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($currentPlatform, true), var_export(sprintf("Migration can only be executed safely on '%s'.", $currentPlatform), true)), ""); } return implode("\n", $code); }
/** * Returns PHP code for a migration file that "executes" the given * array of SQL statements. * * @param \Doctrine\DBAL\Migrations\Configuration\Configuration $configuration * @param array $sql * @return string */ protected function buildCodeFromSql(\Doctrine\DBAL\Migrations\Configuration\Configuration $configuration, array $sql) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = array("\$this->abortIf(\$this->connection->getDatabasePlatform()->getName() != \"{$currentPlatform}\");", ""); foreach ($sql as $query) { if (strpos($query, $configuration->getMigrationsTableName()) !== FALSE) { continue; } $code[] = "\$this->addSql(\"{$query}\");"; } return implode("\n", $code); }
private function buildCodeFromSql(Configuration $configuration, array $sql) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = array(); foreach ($sql as $query) { if (stripos($query, $configuration->getMigrationsTableName()) !== false) { continue; } $code[] = sprintf("\$this->addSql(%s);", var_export($query, true)); } if ($code) { array_unshift($code, sprintf("\$this->abortIf(\$this->connection->getDatabasePlatform()->getName() != %s, %s);", var_export($currentPlatform, true), var_export(sprintf("Migration can only be executed safely on '%s'.", $currentPlatform), true)), ""); } return implode("\n", $code); }
public function markNotMigrated() { $this->configuration->createMigrationTable(); $this->connection->executeQuery("DELETE FROM " . $this->configuration->getMigrationsTableName() . " WHERE version = ?", array($this->version)); }
public function testMigrationsTable() { $config = new Configuration($this->getSqliteConnection()); $this->assertEquals("doctrine_migration_versions", $config->getMigrationsTableName()); }
/** * Returns PHP code for a migration file that "executes" the given * array of SQL statements. * * @param Configuration $configuration * @param array $sql * @return string */ protected function buildCodeFromSql(Configuration $configuration, array $sql) { $currentPlatform = $configuration->getConnection()->getDatabasePlatform()->getName(); $code = []; foreach ($sql 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($currentPlatform, true), var_export(sprintf('Migration can only be executed safely on "%s".', $currentPlatform), true)), ''); } return implode(chr(10), $code); }