当前位置: 首页 > 工具软件 > migrate > 使用案例 >

migrate用法

步建茗
2023-12-01

创建数据表
第一步:创建文件

php yii migrate/create create_table_(表名) 

第二步:修改safeUp文件

public function safeUp()
{
$tableOptions = null;
        if ($this->db->driverName === 'mysql') {
          $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB COMMENT="菜单表"';
        }
        $this->createTable('{{%menu}}', [
            'id' => $this->primaryKey(),
            'parent_id' => $this->integer(11)->defaultValue(0)->comment('父级菜单id'),
            'menu_name' => $this->string(100)->notNull()->comment('菜单名称'),
            'menu_type' => $this->string(100)->notNull()->comment('菜单类型(menu
        ], $tableOptions);
}

第三步:执行

php yii migrate

删除数据表
第一步:创建文件

php yii migrate/create delete_table_(表名) 

第二步:修改safeDown文件

public function safeDown()
{
	 $this->dropTable('{{%file_storage_item}}');
}

第三部:执行

php yii migrate

添加字段 :
第一步:创建文件

php yii migrate/create add_column_rsync_sh_to_conf_table(名称推荐(方便记录和定位查找):add_column_添加字段_table_表名称)

第二步:修改safeUp和safeDown方法

public function safeUp()
{
        $ret = $this->db->createCommand(
            "SELECT * FROM information_schema.columns WHERE table_schema = DATABASE() 
AND table_name = '表名称' AND column_name = '添加字段名'"
        )->queryOne();
        if (empty($ret)) {
            $this->addColumn('表名称', '添加字段名', $this->tinyInteger(1)->notNull()->defaultValue(0)->comment('字段说明'));
        }
    }
    public function safeDown(){
        $this->dropColumn('表名称','添加字段名');
        return true;
    }

第三部:执行

php yii migrate

后续的修改字段,删除字段,都是三步,这里直接写修改内容了

修改字段

public function safeUp()
{
	$this->alterColumn('{{application_service}}', 'status', 'SMALLINT(4) NOT NULL DEFAULT 0 COMMENT       "绑定状态,0:解绑 1:未绑定 2:审核中 3:审核通过 4:审核拒绝 5:禁用"');
}

添加索引

public function safeUp()
{
	$this->createIndex('created_at', "{{app_base}}", ['created_at'],true); 
}

删除字段

public function safeDown()
{
	$this->dropColumn('{{app_base}}', 'manager_id');
}
 类似资料: