我想向我的表用户添加约束:username => unique, password => NOT NULL

我想使用迁移使其正确,但我找不到方法。

我可以删除表并使用约束或直接在命令行中再次创建它,但是我将丢失数据。

我在这里查看了文档:http://www.yiiframework.com/doc/api/1.1/CDbMigration,但是什么也没找到。

我正在使用yii框架和MySQL数据库。

解决方案:

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)');
  }
}

最佳答案

使用alterColumn方法。

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


注意:您需要重新指定完整的列结构,而不仅仅是在其上添加新的内容,因此您可能需要将varchar(32)内容更改为当前结构。

10-06 15:36