/** * Executes the command. * * @param InputInterface $input * @param OutputInterface $output * @return object|OutputInterface */ protected function execute(InputInterface $input, OutputInterface $output) { $migration = file_get_contents(APPPATH . '/config/migration.php'); $current = MigrationHelper::getLatestVersion($migration); $migrationsPath = APPPATH . 'migrations'; list($filenames, $migrations) = MigrationHelper::getMigrations($migrationsPath); $end = count($migrations) - 1; $latest = $migrations[$end]; // Enable migration and change the current version to a latest one MigrationHelper::toggleMigration(true); MigrationHelper::changeVersion($current, $latest); $this->codeigniter->load->library('migration'); $this->codeigniter->migration->current(); MigrationHelper::toggleMigration(); // Show messages of migrated files if ($current == $latest) { $message = 'Database is up to date.'; return $output->writeln('<info>' . $message . '</info>'); } $migrationsCount = count($migrations); for ($counter = 0; $counter < $migrationsCount; $counter++) { if ($current >= $migrations[$counter]) { continue; } $filename = $filenames[$counter]; $message = "{$filename} has been migrated to the database"; $output->writeln('<info>' . $message . '</info>'); } }
/** * Executes the command. * * @param InputInterface $input * @param OutputInterface $output * @return object|OutputInterface */ protected function execute(InputInterface $input, OutputInterface $output) { $migration = file_get_contents(APPPATH . '/config/migration.php'); $current = MigrationHelper::getLatestVersion($migration); $migrationsPath = APPPATH . 'migrations'; list($filenames, $migrations) = MigrationHelper::getMigrations($migrationsPath); // Might get the latest or the specified version or revert back $end = count($migrations) - 1; if (intval($current) <= 0) { $message = 'There\'s nothing to be rollbacked at.'; return $output->writeln('<error>' . $message . '</error>'); } $version = $input->getArgument('version'); $versionFound = false; foreach ($migrations as $migration) { if ($migration == $version || empty($version)) { $versionFound = true; break; } } if (!$versionFound) { $message = "Cannot rollback to version {$version}."; return $output->writeln('<error>' . $message . '</error>'); } $latest = $migrations[$end]; $latestFile = $filenames[$end]; if ($version) { $latest = $version; } // Enable migration and change the current version to a latest one MigrationHelper::toggleMigration(true); MigrationHelper::changeVersion($current, $latest); $this->codeigniter->load->library('migration'); $this->codeigniter->migration->current(); MigrationHelper::toggleMigration(); $message = "Database is reverted back to version {$latest} ({$latestFile})"; return $output->writeln('<info>' . $message . '</info>'); }