Revision 148 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Database\Console;use Illuminate\Console\Command;use Illuminate\Contracts\Events\Dispatcher;use Illuminate\Database\Connection;use Illuminate\Database\ConnectionResolverInterface;use Illuminate\Database\Events\SchemaDumped;use Illuminate\Filesystem\Filesystem;use Illuminate\Support\Facades\Config;use Symfony\Component\Console\Attribute\AsCommand;#[AsCommand(name: 'schema:dump')]class DumpCommand extends Command{/*** The console command name.** @var string*/protected $signature = 'schema:dump{--database= : The database connection to use}{--path= : The path where the schema dump file should be stored}{--prune : Delete all existing migration files}';/*** The name of the console command.** This name is used to identify the command during lazy loading.** @var string|null** @deprecated*/protected static $defaultName = 'schema:dump';/*** The console command description.** @var string*/protected $description = 'Dump the given database schema';/*** Execute the console command.** @param \Illuminate\Database\ConnectionResolverInterface $connections* @param \Illuminate\Contracts\Events\Dispatcher $dispatcher* @return int*/public function handle(ConnectionResolverInterface $connections, Dispatcher $dispatcher){$connection = $connections->connection($database = $this->input->getOption('database'));$this->schemaState($connection)->dump($connection, $path = $this->path($connection));$dispatcher->dispatch(new SchemaDumped($connection, $path));$info = 'Database schema dumped';if ($this->option('prune')) {(new Filesystem)->deleteDirectory(database_path('migrations'), $preserve = false);$info .= ' and pruned';}$this->components->info($info.' successfully.');}/*** Create a schema state instance for the given connection.** @param \Illuminate\Database\Connection $connection* @return mixed*/protected function schemaState(Connection $connection){return $connection->getSchemaState()->withMigrationTable($connection->getTablePrefix().Config::get('database.migrations', 'migrations'))->handleOutputUsing(function ($type, $buffer) {$this->output->write($buffer);});}/*** Get the path that the dump should be written to.** @param \Illuminate\Database\Connection $connection*/protected function path(Connection $connection){return tap($this->option('path') ?: database_path('schema/'.$connection->getName().'-schema.sql'), function ($path) {(new Filesystem)->ensureDirectoryExists(dirname($path));});}}