Задать вопрос
FitTech
@FitTech

Как сделать миграцию с условием?

Здравствуйте! Подскажите, пожалуйста, как сделать миграцию с условием?
Например, есть два разных окружения одного проекта и когда-то в одном из окружений в базу "на лету" в одну из таблиц было добавлено поле(допустим price). Теперь это поле нужно добавить в миграцию, но как сделать так чтобы "не посыпалось" на другом окружении, типа добавить в миграции проверку, если поле уже есть в указанной таблице, то миграцию просто записать что прошла, а если нету, то поле добавить в таблицу?
  • Вопрос задан
  • 236 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
proudmore
@proudmore
Напишите полноценную миграцию, и отметьте ее примененной. Так вы синхронизируете состояние между окружениями, и проблемы не будет
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А в чем проблема проверки существования?
$shema = Yii::$app->db->getTableSchema('some_my_table_name');
/* @var $schema yii\db\TableSchema */
/* @var $column yii\db\ColumnSchema */
$columns = $schema->columns;
print_r($columns);

https://www.yiiframework.com/doc/api/2.0/yii-db-sc...
https://www.yiiframework.com/doc/api/2.0/yii-db-ta...
https://www.yiiframework.com/doc/api/2.0/yii-db-co...
там есть все данные для построение любых условий. Так что можно делать проверки в миграции и помечать миграцию как примененную.
Ответ написан
Комментировать
FitTech
@FitTech Автор вопроса
Так же можно сделать таким способом:
try{
            $this->addColumn('table', 'price', $this->integer()->notNull());
        }  catch (\Exception $e) {
            return true;
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы