创建数据表
第一步:创建文件
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');
}