12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace catcher\command;
- use catcher\CatchAdmin;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\input\Option as InputOption;
- use think\console\Output;
- use think\migration\command\migrate\Run;
- class MigrateRunCommand extends Run
- {
- protected $module;
- public function configure()
- {
- $this->setName('catch-migrate:run')
- ->setDescription('Migrate the database')
- ->addArgument('module', Argument::REQUIRED, 'migrate the module database')
- ->addOption('--target', '-t', InputOption::VALUE_REQUIRED, 'The version number to migrate to')
- ->addOption('--date', '-d', InputOption::VALUE_REQUIRED, 'The date to migrate to')
- ->setHelp(<<<EOT
- The <info>migrate:run</info> command runs all available migrations, optionally up to a specific version
- <info>php think catch-migrate:run module</info>
- <info>php think catch-migrate:run module -t 20110103081132</info>
- <info>php think catch-migrate:run module -d 20110103</info>
- <info>php think catch-migrate:run -v</info>
- EOT
- );
- }
- protected function execute(Input $input, Output $output)
- {
- $this->module = strtolower($input->getArgument('module'));
- $version = $input->getOption('target');
- $date = $input->getOption('date');
- // run the migrations
- $start = microtime(true);
- if (null !== $date) {
- $this->migrateToDateTime(new \DateTime($date));
- } else {
- $this->migrate($version);
- }
- $end = microtime(true);
- // 重置 migrations 在循环冲无法重复使用
- $this->migrations = null;
- $output->writeln('');
- $output->writeln('<comment>All Done. Took ' . sprintf('%.4fs', $end - $start) . '</comment>');
- }
- /**
- * 获取 migration path
- *
- * @time 2019年12月03日
- * @param $module
- * @return string
- */
- protected function getPath()
- {
- return CatchAdmin::moduleMigrationsDirectory($this->module);
- }
- }
|