Как Laravel обрабатывает миграции, которые происходят "не по порядку"? - PullRequest
3 голосов
/ 22 апреля 2020

Итак, скажем, первого числа этого месяца я создаю ветвь A с файлом миграции с именем 2020_04_01_113108_modify_request_logs_table.php

Но, скажем, я еще не объединяю эту ветку с моей веткой Master, и затем через 2 дня я начинаю работать над веткой B с файлом миграции с именем 2020_04_03_113108_create_label_logs_table.php

Итак, 4-го я объединяю ветку B с master и запускаю php artisan migrate, и она запускает вторую миграцию.

И вот 6-го я наконец-то готов объединить ветвь А в мастер и запустить php artisan migrate. Что-то, что может go не так с этой миграцией? Система миграции заботится о том, чтобы даты файлов были не в порядке? Будет ли он игнорировать файл A-ветви, поскольку он уже запустил миграцию с датой позже, чем этот файл?

Ответы [ 2 ]

4 голосов
/ 22 апреля 2020

Миграция, которая еще не была выполнена, будет.

Чтобы проверить это заранее, вы можете запустить php artisan migrate:status, чтобы увидеть, какие из них уже выполнены («Да»), а какие нет («Нет»).

вывод будет выглядеть так:

+------+-------------------------------------------------------------------+-------+
| Ran? | Migration                                                         | Batch |
+------+-------------------------------------------------------------------+-------+
| Yes  | 2019_12_12_184629_create_users_table                              | 1     |
| Yes  | 2020_03_27_153830_create_another_table                            | 1     |
| No   | 2020_04_01_090622_modify_user_table                               |       |
| Yes  | 2020_04_11_102846_update_level                                    | 1     |
| No   | 2020_04_22_094132_dummy_migration                                 |       |
+------+-------------------------------------------------------------------+-------+
1 голос
/ 22 апреля 2020

На самом деле, Laravel разрешит это из коробки. Все ранее выполненные миграции сохраняются в вашей базе данных в таблице migrations. После запуска новых миграций Laravel сравнит их с миграциями, которые уже были запущены для этого приложения, просмотрев эту таблицу migrations.

Я провел небольшое исследование и фактически нашел методы в рамках что делают описанные логи c выше. Вы можете проверить их здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...