Миграция по удалению таблицы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Миграция по удалению таблицы

Сообщение maleks »

Привет.
Потребовалось удалить таблицу, сказали что не нужен функционал.
Думаю как это в миграцих отразить.
В up() понятно что dropTable
, а в down(), думаете createTable() для ее последнего состояния (она же могла меняться многими миграциями)?
Yii2 universal module sceleton - for basic and advanced templates
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Миграция по удалению таблицы

Сообщение skynin »

я бы сделал в down() createTable.
Миграции должны быть сделаны так, что на пустой схеме их можно гонять туда сюда.
Исключение - когда ну очень муторно, сложно восстановить какие-то изменения.
ну например - добавили колонку, пересчитали что-то и записали в нее, а две колонки которые нужны были для пересчета удалили (вместе с данными в них ессно), потому что - новый код уже сразу пересчитывает и записывает в новую колонку.
Как восстановить? да вобщем никак. только в up надо было бекапить содержимое этих колонок, и т.п.

Но если можно сделать восстановление до состояния перед этой миграцией - надо делать восстановление.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Миграция по удалению таблицы

Сообщение unknownby »

maleks писал(а): 2020.08.29, 09:20 Привет.
Потребовалось удалить таблицу, сказали что не нужен функционал.
Думаю как это в миграцих отразить.
В up() понятно что dropTable
, а в down(), думаете createTable() для ее последнего состояния (она же могла меняться многими миграциями)?
Это хороший вопрос, однако стоит уточнить, будут ли удаляться с проекта все файлы, которые относились к функционалу.
Другими словами, при действии down() может не создаться таблица, т.к. модель удалена была :)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Миграция по удалению таблицы

Сообщение ElisDN »

unknownby писал(а): 2020.08.31, 08:46 Другими словами, при действии down() может не создаться таблица, т.к. модель удалена была :)
Таких поломок не должно быть вообще. Миграции не должны использовать ваши ActiveRecord.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Миграция по удалению таблицы

Сообщение maleks »

unknownby писал(а): 2020.08.31, 08:46 Это хороший вопрос, однако стоит уточнить, будут ли удаляться с проекта все файлы, которые относились к функционалу.
да, все файлы будут удаляться. А зачем бы они были нужны без таблицы?
unknownby писал(а): 2020.08.31, 08:46 Другими словами, при действии down() может не создаться таблица, т.к. модель удалена была :)
Таблицы не зависят от моделей, вспомните - сначала создается таблица, потом модель под нее.

p.s. Сейчас написал миграцию, но по сути перекопипастил из предыдущих миграций, но только наоборот, где было в down, стало в up. И как то не сильно впечатлен процессом, чисто из соображений DRY.
Yii2 universal module sceleton - for basic and advanced templates
Ответить