Lorsque l’on développe des applications avec Laravel, et même n’importe quel autre framework, il est courant d’avoir souvent besoin de modifier la structure de sa base de données de test. En général pour les nouvelles fonctionnalités, on ajoute de nouvelles migrations pour construire sa base de données, mais on peut aussi avoir besoin de modifier d’anciennes migrations. C’est tout à faire possible si l’application n’est pas encore en production. Par contre dans le cas contraire, je vous conseille d’éviter et de tout simplement faire une nouvelle migration pour modifier une table qui est là depuis longtemps.
Bien évidemment, il est possible d’utiliser les seeds pour insérer et remettre des données de test dans sa base de données si vous relancez l’ensemble des migrations. Cependant, parfois et pour diverses raisons qui sont propre à chacun dans le moment ou vous êtes en train de créer votre application sur Laravel, vous pouvez ressentir le besoin de relancer une seule migration sur une table de la base de données. Les concepteurs de Laravel ont encore une fois tout prévu et il est possible de relancer une seule migration indépendamment des autres. Il faudra tout de même faire attention aux relations pour éviter d’avoir des problèmes en cascade lors de vos modifications et tests.
Supprimer et rejouer une migration dans Laravel
Pour rejouer une seule migration dans Laravel, vous devez d’abord effectuer un rollback de la migration spécifique que vous souhaitez exécuter à nouveau, puis la relancer. Trouvez le nom de fichier de la migration que vous voulez exécuter à nouveau. Les fichiers de migration sont généralement situés dans le dossier database/migrations et ont un format de nommage tel que yyyy_mm_dd_hhmmss_nom_de_la_migration.php. Une fois que vous avez identifié le bon fichier, pour annuler une migration spécifique, vous pouvez utiliser la commande migrate:rollback avec l’option –path. Dans mon cas et pour l’exemple voici la commande utilisée :
php artisan migrate:rollback --path=/database/migrations/2024_01_12_151514_create_refunds_table.php
Vous allez normalement obtenir un message qui vous confirme que tout s’est bien passé, dans mon cas :
INFO Rolling back migrations.
2024_01_12_151514_create_refunds_table .............. 41ms DONE
Pour que vos mises à jour soient prises en compte, il va donc falloir relancer les migrations avec la commande que vous connaissez sûrement déjà :
php artisan migrate
Elle me confirme que tout s’est bien passé avec le message suivant :
INFO Running migrations.
2024_01_12_151514_create_refunds_table .............. 139ms DONE
Ça, c’était la solution facile qui implique que vous n’aviez pas d’autres migrations en attente d’être exécutés. Si c’est le cas, vous pouvez alors relancer précisément cette migration avec la même commande ou presque que pour le rollback avec :
php artisan migrate --path=/database/migrations/2024_01_12_151514_create_refunds_table.php
Vous allez vraiment devenir des experts en migrations Laravel avec mes tutoriels, en tout cas, c’est ce que je vous souhaite et surtout que je vous ai aidé dans votre mission !