[英]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.