1.创建一个数据库迁移:
yii migrate/create
这是一个通用的创建数据迁移格式,其中
ps:
举例说明,执行以下指令:
./yii migrate/create ArticleInit
如果想配置migration 在 console/config/main.php 中controllerMap添加配置
'migrate' => [
'class' => yxx\db\controllers\MigrateController::class,
'migrationNamespaces' => [
'console\migrations',
'yxx\user\migrations',
],
],
执行完后在create后默认会在console/migrations目录下生成一个控制器
up方法
public function safeUp()
{
if ($this->db->driverName === 'mysql') {
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
}
$this->createTable('{{%article}}', [
'id' => $this->pk()->comment('文章ID'),
'userId' => $this->integer()->notNull()->comment('用户ID'),
'title' => $this->string(60)->notNull()->comment('标题'),
'selfTypeId' => $this->integer()->notNull()->comment('自定义分类ID'),
'sysTypeId' => $this->integer()->notNull()->comment('系统分类ID'),
'isTuijian' => $this->tinyInteger()->notNull()->comment('是否推荐'),
'isComment' => $this->tinyInteger()->notNull()->comment('是否可评论'),
'isPrivate' => $this->tinyInteger()->notNull()->comment('是否仅自己可见'),
'publishTime' => $this->timestamp()->notNull()->comment('发布时间'),
'tags' => $this->string(60)->notNull()->comment('标签,最多5个,英文逗号分隔'),
'summary' => $this->string(200)->notNull()->comment('摘要'),
'thumbUrl' => $this->string(120)->notNull()->comment('缩略图地址'),
'createTime' => $this->createTime()->comment('创建时间'),
'updateTime' => $this->updateTime()->comment('更新时间')
], $tableOptions);
}
down方法一般为回撤
public function safeDown()
{
echo "M190116032929ArticleInit cannot be reverted.\n";
return false;
}
如下是所有这些数据库访问方法的列表:
yii\db\Migration::execute(): 执行一条 SQL 语句
yii\db\Migration::insert(): 插入单行数据
yii\db\Migration::batchInsert(): 插入多行数据
yii\db\Migration::update(): 更新数据
yii\db\Migration::delete(): 删除数据
yii\db\Migration::createTable(): 创建表
yii\db\Migration::renameTable(): 重命名表名
yii\db\Migration::dropTable(): 删除一张表
yii\db\Migration::truncateTable(): 清空表中的所有数据
yii\db\Migration::addColumn(): 加一个字段
yii\db\Migration::renameColumn(): 重命名字段名称
yii\db\Migration::dropColumn(): 删除一个字段
yii\db\Migration::alterColumn(): 修改字段
yii\db\Migration::addPrimaryKey(): 添加一个主键
yii\db\Migration::dropPrimaryKey(): 删除一个主键
yii\db\Migration::addForeignKey(): 添加一个外键
yii\db\Migration::dropForeignKey(): 删除一个外键
yii\db\Migration::createIndex(): 创建一个索引
yii\db\Migration::dropIndex(): 删除一个索引
2.提交迁移:
可以执行如下:
./yii migrate
这个指令会提交所有的迁移
或者这样,指定类名,提交一个迁移
./yii migrate M190116032929ArticleInit
删除某字段:
public function down() {$this->dropColumn('{{app_base}}', 'manager_id');}
删除某张表:
public function down() {$this->dropTable('{{%file_storage_item}}');}
3.撤销
./yii migrate/down 执行某些撤销对表的操作 ./yii migratre/to (迁移文件名)执行某个指定的迁移文件 在创建数据表的过程中可以同时声称多张表,删除多张表 执行过的迁移文件,会在数据库的migration 中生成一条记录,记录此迁移文件已经执行过,下次将执行数据表中不存在的迁移文件 注意: ./yii migrate/down 此命令执行不只删除了对数据库的操作同时也会删除migration数据表中的执行记录