Виталий: видно недопонимаете.
Например, попробуйте в PostgreSQL объявить тип поля как ENUM без создания пользовательского типа. Ну или добавить в уже созданному типу ENUM новое значение без дополнительных телодвижений.
Виталий: подобное можно эмулировать и в Oracle через CHECK CONSTRAINT.
>> но подобное имеется
Так в чем суть дискуссии? Топикстартером был поставлен конкретный вопрос на который он получил конкретный ответ. Если у Вас есть решение лучше - буду рад на него взглянуть.
Если хотите обсудить те или иные возможности серверов БД - создавайте вопрос и в его рамках получите исчерпывающие ответы.
А я у ответившему тоже задал вопрос, заметьте я ничего не утверждал, а лишь задал вопрос. И считаю, что мой вопрос вполне можно было обсудить в данном первоначальном вопросе.
Виталий: так я Вам и ответил, что тип, подобный ENUM в MySQL, есть не во всех серверах БД. Ваша ссылка на документацию - это не совсем тот ENUM, нежели в MySQL. О чем я Вам и написал...
Тот же Oracle позволяет создавать классы и указывать их как значения полей в таблице. Но это не значит, что такая возможность есть у абсолютно всех СУБД.
я посмотрел на класс миграций у yii2 и не увидел ни одного метода, который бы мог кроссово создавать enum хотя бы для mysql и postgresql. Поэтому придется либо делать проверку на используемую БД и уже в if делать либо addColumn для mysql, либо create type enum для postgresql, либо по старинке для полей show или status использовать 0 - неактивно или 1 - активно, тогда это будет кроссБДшно. У меня просто админка должна по заданию работать на любой из этих двух БД.
Виталий: это все потому, что Вы не до конца понимаете самой сути миграций. Они нужны для поддержания БД в актуальном состоянии. Т.е. для синхронизации версии приложения с версией БД. Весь код методов миграций в конечном итоге генерит всего лишь инструкции SQL, которые затем выполняются серверов БД.
не умничайте, я всё прекрасно понимаю. И если например ваша админка установлена на двух разных серверах и каждая использует разные БД, и все они берут обновление из одного репозитория, то что тут еще понимать. Поэтому в миграциях и используются конструкции вида createtable и addcolumn и т.д. в виде php функций, так как в зависимости от базы (если она конечно поддерживается) будет сформирован тот или иной SQL код.