/** * Run migrations for the specified module. * * @param string $slug * * @return mixed */ protected function migrate($slug = null) { $pretend = Arr::get($this->option(), 'pretend', false); if (!is_null($slug) && $this->module->exists($slug)) { $path = $this->getMigrationPath($slug); if (floatval(App::version()) > 5.1) { $pretend = ['pretend' => $pretend]; } $this->migrator->run($path, $pretend); // 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) { if (!$this->option('quiet')) { $this->line($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('module:seed', ['module' => $slug, '--force' => true]); } } else { $modules = $this->module->all(); if (count($modules) == 0) { return $this->error("Your application doesn't have any modules."); } $migrationsAll = []; foreach ($modules as $module) { $path = $this->getMigrationPath($module['slug']); $files = $this->migrator->getMigrationFiles($path); $ran = $this->migrator->getRepository()->getRan(); $migrations = array_diff($files, $ran); $this->migrator->requireFiles($path, $migrations); $migrationsAll = array_merge($migrationsAll, $migrations); } if (floatval(App::version()) > 5.1) { $pretend = ['pretend' => $pretend]; } sort($migrationsAll); $this->migrator->runMigrationList($migrationsAll, $pretend); // 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) { if (!$this->option('quiet')) { $this->line($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')) { foreach ($modules as $module) { $this->call('module:seed', ['module' => $module['slug'], '--force' => true]); } } } }
/** * Run the migration reset for the specified module. * * @param string $slug * @return mixed */ protected function reset($slug) { $this->migrator->setconnection($this->input->getOption('database')); $pretend = $this->input->getOption('pretend'); $migrationPath = $this->getMigrationPath($slug); $migrations = $this->migrator->getMigrationFiles($migrationPath); if (count($migrations) == 0) { return $this->error('Nothing to rollback.'); } // We need to reverse these migrations so that they are "downed" in reverse // to what they run on "up". It lets us backtrack through the migrations // and properly reverse the entire database schema operation that originally // ran. foreach ($migrations as $migration) { $this->info('Migration: ' . $migration); $this->runDown($slug, $migration, $pretend); } }
/** * Execute the console command. * * @return void */ public function fire() { if ($this->manager->getMigrationBehavior() == 'only') { foreach ($this->manager->getTenantMigrations() as $migrationName) { $this->info($migrationName); } } else { // This bit of code will get all of the migrations from the file system and load them into // an array. After the migration files are in the array, we will get the actual class name // from the migration file. $path = $this->getMigrationPath(); $files = $this->migrator->getMigrationFiles($path); $migrations = array(); foreach ($files as $file) { $migrations[] = $this->tenantMigrationResolver->resolveMigrationName($file); } $migrations = array_diff($migrations, $this->manager->getTenantMigrations()); foreach ($migrations as $migrationName) { $this->info($migrationName); } } }
/** * Run the migration reset for the specified module. * * Migrations should be reset in the reverse order that they were * migrated up as. This ensures the database is properly reversed * without conflict. * * @param string $slug * @return mixed */ protected function reset($slug) { $this->migrator->setconnection($this->input->getOption('database')); $pretend = $this->input->getOption('pretend'); $migrationPath = $this->getMigrationPath($slug); $migrations = array_reverse($this->migrator->getMigrationFiles($migrationPath)); if (count($migrations) == 0) { return $this->error('Nothing to rollback.'); } foreach ($migrations as $migration) { $this->info('Migration: ' . $migration); $this->runDown($slug, $migration, $pretend); } }
/** * Run the migration reset for the specified module. * * Migrations should be reset in the reverse order that they were * migrated up as. This ensures the database is properly reversed * without conflict. * * @param string $slug */ protected function reset($slug) { if ($this->getStringOption('database')) { $this->migrator->setconnection($this->getStringOption('database')); } $pretend = $this->getBooleanOption('pretend'); $migrationPath = $this->getMigrationPath($slug); $migrations = array_reverse($this->migrator->getMigrationFiles($migrationPath)); if (count($migrations)) { foreach ($migrations as $migration) { $this->info('Migration: ' . $migration); $this->runDown($slug, $migration, $pretend); } } else { $this->error('Nothing to rollback.'); } }
/** * Get all of the migration files. * * @param string $path * @return array */ protected function getAllMigrationFiles($path) { return $this->migrator->getMigrationFiles($path); }
/** * Get all of the migration files. * * @return array */ protected function getAllMigrationFiles() { return $this->migrator->getMigrationFiles($this->getMigrationPath()); }
/** * Get all of the migration files. * * @return array */ protected function getAllMigrationFiles() { return $this->migrator->getMigrationFiles($this->laravel['path.database'] . '/migrations'); }
/** * Reset migrations on a single module * * @param ModuleContainerInterface $module * * @return $this */ public function addModuleToReset(ModuleContainerInterface $module) { $path = $module->getPath(['database', 'migrations']); $this->migrator->requireFiles($path, $this->migrator->getMigrationFiles($path)); return $this; }
/** * Reset migrations on a single module * * @param ModuleContainer $module * @return $this */ public function resetModule(ModuleContainer $module) { $path = $module->getPath(['database', 'migrations']); $this->_migrator->requireFiles($path, $this->_migrator->getMigrationFiles($path)); return $this; }
/** * Reset the migrations for the extension with an * optional customized path. * * @param string $path * @return void */ protected function resetMigrations($path = null) { if (!isset(static::$migrator)) { return; } $path = $path ?: $this->getMigrationsPath(); $files = static::$migrator->getMigrationFiles($path); $repository = static::$migrator->getRepository(); // Get an array of migration names which will be // reset $migrations = array_intersect(array_reverse($repository->getRan()), $files); // Loop through the migrations we have to rollback foreach ($migrations as $migration) { // Let the migrator resolve the migration instance $instance = static::$migrator->resolve($migration); // And we'll call the down method on the migration $instance->down(); // Now we need to manipulate what the migrator does to // delete a migration. $migrationClass = new \StdClass(); $migrationClass->migration = $migration; $repository->delete($migrationClass); } }