如何修改Laravel中创建迁移文件的默认目录
修改Laravel迁移文件默认生成目录
要让php artisan make:migration默认将文件生成到database/migrations/child_database,不用每次加--path参数,你可以通过重写默认的迁移生成命令来实现,具体步骤如下:
步骤1:创建自定义迁移命令类
先生成一个自定义命令文件:
php artisan make:command CustomMakeMigrationCommand
打开生成的app/Console/Commands/CustomMakeMigrationCommand.php,替换内容为:
<?php namespace App\Console\Commands; use Illuminate\Database\Console\Migrations\MakeMigrationCommand; use Illuminate\Support\Composer; class CustomMakeMigrationCommand extends MakeMigrationCommand { // 自定义默认迁移目录 protected $defaultPath = 'database/migrations/child_database'; public function __construct(Composer $composer) { parent::__construct($composer); } }
步骤2:替换默认命令
打开app/Providers/AppServiceProvider.php,在boot方法中添加代码,用自定义命令替换系统默认的迁移生成命令:
public function boot() { $this->app->extend('command.migrate.make', function ($originalCommand, $app) { return new \App\Console\Commands\CustomMakeMigrationCommand($app['composer']); }); }
步骤3:确保目标目录存在
手动创建database/migrations/child_database目录,避免生成文件时出现目录不存在的错误:
mkdir -p database/migrations/child_database
验证效果
现在执行常规的迁移生成命令:
php artisan make:migration create_users_table
文件会自动生成到database/migrations/child_database目录下,无需再添加--path参数。如果之后需要临时切换回原目录,只需加--path=database/migrations参数即可覆盖默认设置。
内容的提问来源于stack exchange,提问作者Engr. Umar Ejaz
相关产品推荐
相关产品推荐

