2015-06-12 7 views
3

Я уже читал Running one specific laravel 4 migration (single file), но это не дает мне ответа.Как запустить ремесленника Laravel за один шаг за один раз?

Я хочу знать, есть ли способ запустить команду, чтобы она просто выполняла следующую и только эту миграцию.

У меня есть 10 файлов в папке Migrate-Folder. 7 из них уже мигрировали. Теперь я обнаружил, что, когда я создал 3 новых и запустил команду, все они выполнены.

Проблема в том, что в базе данных «выберите * из миграций» они отображаются в одной партии, а не в отдельных. Это означает, что если я просто хочу откат на один шаг, мы вернемся к шагу 7, а не 9 - чего я хочу.

Это иногда сбивает с толку, поскольку я хочу откат на один шаг за один раз, а не откат всех шагов одной партии.

Я знаю, что могу перемещать файлы в другой папке и просто оставить один для запуска миграции. Затем переместите следующий и снова выполните миграцию, но это очень неудобно - что произойдет, если случайно произойдет переход и переход на шаг 10 до шага 9.

Кто-нибудь знает ответ на этот вопрос?

+1

Существует некоторая информация здесь: http://stackoverflow.com/questions/19102197/running-one-specific-laravel-4-migration-single-file Короткий вариант заключается в том, что для этой цели не были созданы миграции. –

+0

Это то же самое сообщение с моего вопроса. – hogan

+0

Прошу прощения. Я читал это слишком неуклюже. –

ответ

-1

Проблема в том, что в базе данных «выберите * из миграций» они отображаются в одной партии, а не в отдельных. Это означает, что если я просто хочу откат на один шаг, мы вернемся к шагу 7, а не 9 - чего я хочу.

Это не невероятно идеально, но после запуска их можно настроить batch значения на каждой миграции в таблице базы данных, чтобы быть отдельные номера. php artisan migrate:rollback принимает значение MAX() и перематывает все свои миграции обратно.

1

Немного взломать, но вы можете запустить artisan migrate запустить все миграции, то следующая SQL команды, чтобы сделать его похожим на миграции запускалась один за один раз:

SET @a = 0; 
UPDATE migrations SET batch = @a:[email protected]+1; 

Что изменится batch column to 1, 2, 3, 4 .. и т. д. Добавьте там условие WHERE batch>=... (и обновите начальное значение @a), чтобы влиять на определенные миграции.

Тогда вы можете artisan migrate:rollback столько, сколько потребуется.

+0

слишком много хлопот, так как копирование одного файла за другим в папку быстрее, я иду с этим. – hogan

+0

Ну, сколько хлопот это ... вот твой зов.Выполнение двух команд SQL выглядит быстрее, чем ручное копирование файлов. В любом случае, я смиренно предлагаю, что SQL - это «лучший» способ сделать это с точки зрения фактического решения проблемы (и, конечно же, не заслуживает нисходящего). – Colin

+1

Не был моим нисходящим. Я скорее хотел знать, есть ли опция команды. Не волнуйтесь больше, на вопрос ответит. – hogan

1

В Laravel 5.4 вы можете: PHP ремесленник мигрировать --step

При выполнении команды, как это вы можете откатить все миграции индивидуально после, используя по умолчанию «PHP мастеровых мигрируют: Откат» без указания сколько шагов для отката.

+0

Привет, спасибо! – hogan

Смежные вопросы