миграция базы данных в Yii

Чтобы выполнить миграцию в Yii, я использовал эти строки

<?php class m110714_122129_users extends CDbMigration { public function up() { $this-> createTable('{{users}}',array( 'id' => 'pk', 'username' => 'VARCHAR (80) NOT NULL', 'password' => 'VARCHAR (80) NOT NULL', 'email' => 'VARCHAR (128) NOT NULL', 'activekey' => 'VARCHAR (128) NOT NULL DEFAULT \'\'', 'createtime' => 'INTEGER (10) NOT NULL DEFAULT \'0\' ', 'lastvisit' => 'INTEGER (10) NOT NULL DEFAULT \'0\' ', 'superuser' => 'INTEGER (1) NOT NULL DEFAULT \'0\' ', 'status'=> 'INTEGER (1) NOT NULL DEFAULT \'0\' ', )); } public function down() { echo "m110714_122129_users does not support migration down.\n"; return false; } /* // Use safeUp/safeDown to do migration with transaction public function safeUp() { } public function safeDown() { } */ } 

Получить

  CREATE TABLE IF NOT EXISTS `nt_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(128) NOT NULL, `email` varchar(128) NOT NULL, `activkey` varchar(128) NOT NULL DEFAULT '', `createtime` int(10) NOT NULL DEFAULT '0', `lastvisit` int(10) NOT NULL DEFAULT '0', `superuser` int(1) NOT NULL DEFAULT '0', `status` int(1) NOT NULL DEFAULT '0', ); 

Но теперь я хочу внести некоторые изменения, например, делать уникальный ключ

 UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`), KEY `status` (`status`), KEY `superuser` (`superuser`) 

так как это сделать? Я искал документацию Yii, но ничего не нашел. Поэтому любая помощь будет высоко оценена.

Просто поставьте их как неассоциативные значения в массиве следующим образом:

 $this-> createTable('{{users}}',array( 'id' => 'pk', 'username' => 'VARCHAR (80) NOT NULL', 'password' => 'VARCHAR (80) NOT NULL', 'email' => 'VARCHAR (128) NOT NULL', 'activekey' => 'VARCHAR (128) NOT NULL DEFAULT \'\'', 'createtime' => 'INTEGER (10) NOT NULL DEFAULT \'0\' ', 'lastvisit' => 'INTEGER (10) NOT NULL DEFAULT \'0\' ', 'superuser' => 'INTEGER (1) NOT NULL DEFAULT \'0\' ', 'status'=> 'INTEGER (1) NOT NULL DEFAULT \'0\' ', 'UNIQUE KEY `username` (`username`)', 'UNIQUE KEY `email` (`email`)', 'KEY `status` (`status`)', 'KEY `superuser` (`superuser`)', )); 

Таким образом, они будут добавлены в конец инструкции create без каких-либо изменений.

 $this->createTable('{{users}}', array( 'id' => 'pk', 'username' => 'varchar(80) NOT NULL', 'password' => 'varchar(80) NOT NULL', 'email' => 'varchar(128) NOT NULL', 'activkey' => 'varchar(128) NOT NULL DEFAULT \'\'', 'createtime' => 'integer(10) NOT NULL DEFAULT \'0\'', 'lastvisit' => 'integer(10) NOT NULL DEFAULT \'0\'', 'superuser' => 'integer(1) NOT NULL DEFAULT \'0\'', 'status' => 'integer(1) NOT NULL DEFAULT \'0\'', ), ); $this->createIndex('username', '{{user}}', 'username', true); $this->createIndex('email', '{{user}}', 'email', true); $this->createIndex('superuser', '{{user}}', 'superuser', false); $this->createIndex('status', '{{user}}', 'status', false); 

Подробнее см. http://www.yiiframework.com/doc/api/1.1/CDbMigration#createIndex-detail .