Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Database/Console/DumpCommand.php
Строк: 185
<?php

namespace IlluminateDatabaseConsole;

use 
IlluminateConsoleCommand;
use 
IlluminateContractsEventsDispatcher;
use 
IlluminateDatabaseConnection;
use 
IlluminateDatabaseConnectionResolverInterface;
use 
IlluminateDatabaseEventsSchemaDumped;
use 
IlluminateFilesystemFilesystem;
use 
IlluminateSupportFacadesConfig;
use 
SymfonyComponentConsoleAttributeAsCommand;

#[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  IlluminateDatabaseConnectionResolverInterface  $connections
     * @param  IlluminateContractsEventsDispatcher  $dispatcher
     * @return int
     */
    
public function handle(ConnectionResolverInterface $connectionsDispatcher $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  IlluminateDatabaseConnection  $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  IlluminateDatabaseConnection  $connection
     */
    
protected function path(Connection $connection)
    {
        return 
tap($this->option('path') ?: database_path('schema/'.$connection->getName().'-schema.dump'), function ($path) {
            (new 
Filesystem)->ensureDirectoryExists(dirname($path));
        });
    }
}
Онлайн: 0
Реклама