J'ai 5 migrations dans mon projet. Je veux seulement exécuter l'une de ces migrations. Est-il possible de transmettre le nom d'un seul fichier à la commande php artisan migrate
?
Réponses
Trop de publicités?Il semble que vous le faites mal.
Les migrations ont été conçues pour être exécutées par Laravel une par une, dans l'ordre exact dans lequel elles ont été créées, afin qu'il puisse suivre l'exécution et l'ordre d'exécution. De cette manière, Laravel sera en mesure de REVENIR SÛREMENT sur un lot de migrations, sans risquer de casser votre base de données.
Donner à l'utilisateur le pouvoir de les exécuter manuellement rend impossible de savoir (avec certitude) comment annuler les modifications dans votre base de données.
Si vous avez vraiment besoin d'exécuter quelque chose dans votre base de données, vous feriez mieux de créer un script DDL et de l'exécuter manuellement sur votre serveur web.
Ou créez simplement une nouvelle migration et exécutez-la en utilisant artisan.
ÉDIT :
Si vous devez l'exécuter en premier, vous devez d'abord le créer.
Si vous avez juste besoin de les réorganiser, renommez le fichier pour qu'il soit le premier. Les migrations sont créées avec un timestamp :
2013_01_20_221554_table
Pour créer une nouvelle migration avant celui-ci, vous pouvez la nommer
2013_01_19_221554_myFirstMigration
Un petit extrait sympa pour dissiper d'éventuelles craintes lors de l'exécution des migrations Laravel 4 php artisan migrate --pretend
. Cela ne fera que afficher le SQL qui aurait été exécuté si vous aviez lancé la migration réelle.
Il semble que vos premières 4 migrations ont déjà été exécutées. Je suppose que lorsque vous exécutez php artisan migrate
, seules les nouvelles migrations récentes seront exécutées.
Petit conseil : assurez-vous que toutes vos méthodes up() et down() fonctionnent comme vous vous y attendez. J'ai l'habitude de faire up(), down(), up() lorsque j'exécute mes migrations, juste pour les tester. Il serait horrible que vous vous retrouviez avec 5-6 migrations et que vous vous rendiez compte que vous ne pouvez pas les annuler sans difficulté, car vous n'avez pas mis à jour le down() en accord avec le up() à 100%.
Juste mon avis ! J'espère que l'option --pretend
vous aide.
- Réponses précédentes
- Plus de réponses