/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $migration = new Doctrine_Migration(sfConfig::get('sf_lib_dir') . '/migration/doctrine'); if ($migration->getCurrentVersion() < $migration->getLatestVersion()) { try { $migration->migrate($migration->getLatestVersion()); } catch (Exception $e) { } $this->errors = array_merge(array_map(create_function('$e', 'return \' - \'.$e->getMessage();'), $migration->getErrors())); } }
/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $config = $this->getCliConfig(); $migration = new Doctrine_Migration($config['migrations_path']); $from = $migration->getCurrentVersion(); if (is_numeric($arguments['version'])) { $version = $arguments['version']; } else { if ($options['up']) { $version = $from + 1; } else { if ($options['down']) { $version = $from - 1; } else { $version = $migration->getLatestVersion(); } } } if ($from == $version) { $this->logSection('doctrine', sprintf('Already at migration version %s', $version)); return; } $this->logSection('doctrine', sprintf('Migrating from version %s to %s%s', $from, $version, $options['dry-run'] ? ' (dry run)' : '')); try { $migration->migrate($version, $options['dry-run']); } catch (Exception $e) { } // render errors if ($migration->hasErrors()) { if ($this->commandApplication && $this->commandApplication->withTrace()) { $this->logSection('doctrine', 'The following errors occurred:'); foreach ($migration->getErrors() as $error) { $this->commandApplication->renderException($error); } } else { $this->logBlock(array_merge(array('The following errors occurred:', ''), array_map(create_function('$e', 'return \' - \'.$e->getMessage();'), $migration->getErrors())), 'ERROR_LARGE'); } return 1; } $this->logSection('doctrine', 'Migration complete'); }
/** * Output any errors caused by the migration * * @param Doctrine_Migration $migration * @return void */ protected function outputMigrationErrors(Doctrine_Migration $migration) { if ($this->commandApplication && $this->commandApplication->withTrace()) { $this->logSection('doctrine', 'The following errors occurred:'); foreach ($migration->getErrors() as $error) { $this->commandApplication->renderException($error); } } else { $this->logBlock(array_merge(array('The following migration errors occurred:', ''), array_map(create_function('$e', 'return \' - \'.$e->getMessage();'), $migration->getErrors())), 'ERROR_LARGE'); } }