Une autre alternative à celles mentionnées si vous devez le faire plusieurs fois avec les mêmes migrations. Personnellement, je pense que cela ajoute beaucoup de flexibilité à vos migrations.
Ajoutez database/migrationsà votre objet de chargement automatique dans votre composer.jsoncomme ceci:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations" // add this line
]
},
Ajoutez ensuite namespace Database\Migrations;à tous vos fichiers de migration.
Ensuite, exécutez $ composer dump-autoloadpour actualiser votre composer.lockfichier.
Ensuite, en supposant que le nom de votre classe pour la migration est AlterTableWebDirectories, vous pouvez créer une commande comme celle-ci:
$ php artisan make:command DropAlterTableWebDirectories
Et écrivez cette logique dans votre handle()méthode:
public function handle {
(new AlterTableWebDirectories)->down();
DB::raw("delete from migrations where migration like '%alter_table_web_directories%'");
}
Cela fera exactement ce que vous voulez. Si vous souhaitez décrémenter le nombre de migrations au lieu de le supprimer, vous pouvez probablement comprendre comment modifier la DB:rawcommande.
Cette commande peut être étendue pour vous permettre de choisir dynamiquement la migration que vous supprimez en passant un argument dans la commande.
Ensuite, lorsque vous lisez pour migrer à nouveau ce fichier, vous pouvez simplement exécuter php artisan migrateet il ne migrera que celui-ci.
Ce processus vous permet d'apporter des modifications spécifiques aux migrations sans avoir à effectuer une régénération complète et un amorçage à chaque fois.
Personnellement, je dois beaucoup faire ça parce que mes graines sont plutôt grosses.