使用迁移添加约束 - yii 框架


Add constraint using migration - yii framework

我想为我的表用户添加约束: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) 的内容更改为当前结构。

然后仅导出表中的数据,而不包含数据和同时具有结构的数据。导出包含数据的表后。

删除表并创建添加了约束的同一表。

现在导入导出的表。

做!!!!!