如果您需要多次执行相同的迁移,则可以使用上述方法。我个人认为这为您的迁移增加了很大的灵活性。
将数据库/迁移添加到composer中的自动加载对象中。Json是这样的:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations" // add this line
]
},
然后添加命名空间Database\Migrations;到所有迁移文件。
然后运行$ composer dump-autoload来刷新你的composer。锁文件。
然后,假设你的迁移类名是AlterTableWebDirectories,你可以创建这样的命令:
$ php artisan make:command DropAlterTableWebDirectories
并在handle()方法中写入以下逻辑:
public function handle {
(new AlterTableWebDirectories)->down();
DB::raw("delete from migrations where migration like '%alter_table_web_directories%'");
}
这正是你想要的。如果您希望减少迁移计数而不是删除它,您可能会弄清楚如何更改DB:raw命令。
可以对该命令进行扩展,使您可以通过向该命令传递参数来动态地选择要删除的迁移。
当你再次读取迁移文件时,你可以运行php artisan migrate,它只会迁移那一个。
这个过程允许您对迁移进行特定的更改,而不必每次都进行完全刷新和播种。
就我个人而言,我需要经常这样做,因为我的种子相当大。