migrator = $migrator; } /** * Execute the console command. * * @return void */ public function handle() { if (! $this->confirmToProceed()) { return; } $this->prepareDatabase(); // Next, we will check to see if a path option has been defined. If it has // we will use the path relative to the root of this installation folder // so that migrations may be run for any path within the applications. $this->migrator->run($this->getMigrationPaths(), [ 'pretend' => $this->option('pretend'), 'step' => $this->option('step'), ]); // Once the migrator has run we will grab the note output and send it out to // the console screen, since the migrator itself functions without having // any instances of the OutputInterface contract passed into the class. foreach ($this->migrator->getNotes() as $note) { $this->output->writeln($note); } // Finally, if the "seed" option has been given, we will re-run the database // seed task to re-populate the database, which is convenient when adding // a migration and a seed at the same time, as it is only this command. if ($this->option('seed')) { $this->call('db:seed', ['--force' => true]); } } /** * Prepare the migration database for running. * * @return void */ protected function prepareDatabase() { $this->migrator->setConnection($this->option('database')); if (! $this->migrator->repositoryExists()) { $this->call( 'migrate:install', ['--database' => $this->option('database')] ); } } }