2015-03-13 2 views
0

Я хотел бы добавить ограничения для пользователя моей таблицы: username => unique, password => NOT NULL.Добавить ограничение с помощью миграции - yii framework

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

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

Я посмотрел документацию здесь: http://www.yiiframework.com/doc/api/1.1/CDbMigration, но ничего не нашел.

Я использую yii framework и MySQL db.

РЕШЕНИЕ:

class m150311_075741_update_users extends CDbMigration 
{ 
    public function up() 
    { 
     $this->alterColumn('user', 'username', 'varchar(255) unique'); 
     $this->alterColumn('user', 'password', 'varchar(255) not null'); 
    } 

    public function down() 
    { 
     $this->alterColumn('user', 'username', 'varchar(255) unique'); 
     $this->alterColumn('user', 'password', 'varchar(255)'); 
    } 
} 
+0

За исключением ограничений, которые вам не нужно менять в таблице? –

+0

Да только ограничения – LolWalid

ответ

1

Используйте метод alterColumn.

alterColumn('MyTable', 'username', 'varchar(32) unique'); 
alterColumn('MyTable', 'password', 'varchar(32) not null'); 

Примечания: Вы должны respecify полной структуры столбца еще раз, вы не можете просто добавить новые дополнения к нему, так что вы можете захотеть изменить VARCHAR (32), материала для текущей структуры.

+0

Думал, что это сработало, но это не так:/ – LolWalid

+0

Как вы его используете сейчас? –

+0

Я добавляю его с помощью приглашения MySQL:/didn t найти лучшее решение. Я мог бы создать скрипт, который сохраняет данные, удаляет, создает таблицу, а затем снова добавляет данные, но это сложно для ничего. Это всего лишь две командные строки. – LolWalid

0

Затем экспортировать таблицу только для данных не с данными и структурой обоих. Как только вы экспортируете таблицу с данными.

Удалите таблицу и создайте ту же таблицу с добавленными ограничениями.

Теперь импортируйте экспортированную таблицу.

DONE !!!!!

+0

Этот способ самый простой, мне просто интересно, могу ли я добавить ограничение, не делая все это. Но если я не могу, я бы это сделал. – LolWalid

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