Skip to content

Instantly share code, notes, and snippets.

@amnah
Created November 12, 2015 12:52
Show Gist options
  • Save amnah/384e607f5e2d3cbfbc72 to your computer and use it in GitHub Desktop.
Save amnah/384e607f5e2d3cbfbc72 to your computer and use it in GitHub Desktop.
Yii 2 User migration 3.0.0 > 4.0.0
<?php
use yii\db\Migration;
use yii\db\Schema;
class m151111_122541_upgrade_user_300_to_400 extends Migration
{
public function safeUp()
{
$this->renameColumn("{{%role}}", "create_time", "created_at");
$this->renameColumn("{{%role}}", "update_time", "updated_at");
$this->renameColumn("{{%profile}}", "create_time", "created_at");
$this->renameColumn("{{%profile}}", "update_time", "updated_at");
$this->renameColumn("{{%user_auth}}", "create_time", "created_at");
$this->renameColumn("{{%user_auth}}", "update_time", "updated_at");
$this->renameColumn("{{%user}}", "create_time", "created_at");
$this->renameColumn("{{%user}}", "update_time", "updated_at");
$this->renameColumn("{{%user}}", "api_key", "access_token");
$this->renameColumn("{{%user}}", "login_ip", "logged_in_ip");
$this->renameColumn("{{%user}}", "login_time", "logged_in_at");
$this->renameColumn("{{%user}}", "create_ip", "created_ip");
$this->renameColumn("{{%user}}", "ban_time", "banned_at");
$this->renameColumn("{{%user}}", "ban_reason", "banned_reason");
$this->dropColumn("{{%user}}", "new_email");
$this->renameTable("{{%user_key}}", "{{%user_token}}");
$this->renameColumn("{{%user_token}}", "key_value", "token"); // may be "key" if <3.0.0
$this->renameColumn("{{%user_token}}", "create_time", "created_at");
$this->renameColumn("{{%user_token}}", "expire_time", "expired_at");
$this->dropColumn("{{%user_token}}", "consume_time");
$this->addColumn("{{%user_token}}", "data", Schema::TYPE_STRING . " null after token");
$this->alterColumn("{{%user_token}}", "user_id", Schema::TYPE_INTEGER . " null");
}
public function safeDown()
{
// delete null values in user_token.user_id and then make column not null
// note that the foreign key name is user_key, NOT user_token
$this->execute("delete from {{%user_token}} where user_id is null");
$this->dropForeignKey("{{%user_key_user_id}}", "{{%user_token}}");
$this->alterColumn("{{%user_token}}", "user_id", Schema::TYPE_INTEGER . " not null");
$this->addForeignKey("{{%user_key_user_id}}", "{{%user_token}}", "user_id", "{{%user}}", "id");
$this->renameColumn("{{%user_token}}", "token", "key_value"); // may be "key" if <3.0.0
$this->renameColumn("{{%user_token}}", "created_at", "create_time");
$this->renameColumn("{{%user_token}}", "expired_at", "expire_time");
$this->addColumn("{{%user_token}}", "consume_time", Schema::TYPE_STRING . " null");
$this->dropColumn("{{%user_token}}", "data");
$this->renameTable("{{%user_token}}", "{{%user_key}}");
$this->renameColumn("{{%role}}", "created_at", "create_time");
$this->renameColumn("{{%role}}", "updated_at", "update_time");
$this->renameColumn("{{%profile}}", "created_at", "create_time");
$this->renameColumn("{{%profile}}", "updated_at", "update_time");
$this->renameColumn("{{%user_auth}}", "created_at", "create_time");
$this->renameColumn("{{%user_auth}}", "updated_at", "update_time");
$this->renameColumn("{{%user}}", "created_at", "create_time");
$this->renameColumn("{{%user}}", "updated_at", "update_time");
$this->renameColumn("{{%user}}", "access_token", "api_key");
$this->renameColumn("{{%user}}", "logged_in_ip", "login_ip");
$this->renameColumn("{{%user}}", "logged_in_at", "login_time");
$this->renameColumn("{{%user}}", "created_ip", "create_ip");
$this->renameColumn("{{%user}}", "banned_at", "ban_time");
$this->renameColumn("{{%user}}", "banned_reason", "ban_reason");
$this->addColumn("{{%user}}", "new_email", Schema::TYPE_STRING . " null after email");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment