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.json
comme 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-autoload
pour actualiser votre composer.lock
fichier.
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:raw
commande.
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 migrate
et 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.