如果您需要使用相同的迁移多次执行此操作,则可以替代上述方法。我个人认为这为您的迁移增加了很多灵活性。
像这样添加database/migrations
到您的自动加载对象中composer.json
:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations" // add this line
]
},
然后添加namespace Database\Migrations;
到所有迁移文件。
然后运行$ composer dump-autoload
以刷新composer.lock
文件。
然后,假设迁移的类名是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
,它将仅迁移该文件。
此过程使您可以对迁移进行特定更改,而不必每次都进行完全刷新和播种。
我个人需要做很多事情,因为我的种子很大。