繁体   English   中英

Laravel:如何简化工匠命令?

[英]Laravel: how to simplify artisan commands?

我想简化以下工匠命令,因为我有多个数据库,并且每个数据库的迁移都存储在一个单独的文件夹中。

php artisan make:migration {{name}} --path=/database/migrations/{{folder}}

php artisan migrate:rollback  --path=/database/migrations/{{folder}}

php artisan make:migration {{name}} {{folder}}

php artisan migrate:rollback {{folder}}

这可能吗?如果可以,我该如何实施?

由于这不是 Laravel 命令中的一个选项,因此您自己实现它的一种方法是编写您自己的调用其他 artisan 命令的命令

为此,例如,在您的终端中写入php artisan make:command MigrateWithPath以在app/Console/Commands/MigrateWithPath.php创建一个新命令。 然后,您可以调用 Laravel 在(vendor\laravel\framework\src) \Illuminate\Database\Console\Migrations\MigrateMakeCommand处提供的 vanilla 实现,然后以您指定的方式调用。

请确保您的新命令的名称需要与 Laravel 不同,以防止递归。 因此,我在名称前加上app:以类似于app:make:migration ,但您可以随意使用其他名称。

看看下面的建议:

class MigrateWithPath extends BaseCommand
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'app:make:migration {name : The name of the migration}
        {folder? : The location where the migration file should be created}';

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $this->call('make:migration', [
            'name' => $this->argument('name'),
            '--path' => '/database/migrations/' . $this->argument('folder'),
        ]);

        return 0;
    }

然后对回滚命令执行相同的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM