Yii2 migrate使用

试想一个很简单的场景,在使用Yii2开发时,如果对已经有数据的数据表结构进行编辑的话,需要同步数据结构需要在本地导出一份SQL,放到线上去执行SQL,非常的不方便。
而有了Yii2 migrate工具之后,这个问题简直不是问题。以下对常用的表结构操作进行演示。

关键命令

  • 创建migrate

    1
    yii migrate/create [名称]
  • 执行migrate升级

    1
    yii migrate
  • 执行migrate降级

    1
    yii migrate/down

创建新表

执行创建migrate命令后,项目文件夹下migrations中会多出m170119_093917_[名称].php的文件,文件名称可能不同,但是结构是相同的,打开该php文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
use yii\db\Migration;

class m170119_093917_name_20 extends Migration
{
public function up()
{
$tableName = 't_category';
$this->createTable($tableName, [
'id' => $this->primaryKey(),
'name' => $this->string(10)->notNull()->unique()->comment('标识'),
'title' => $this->string(6)->notNull()->comment('名称'),
'count' => $this->integer()->defaultValue(0)->notNull()->comment('入驻数量')
]);
}

public function down()
{
echo "m170119_093917_name_20 cannot be reverted.\n";
return false;
}

/*
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
}

public function safeDown()
{
}
*/
}

如果需要支持降级的话在down方法中写逻辑返回true即可。

以下代码演示Migration操作,不再新建migrate,执行使用本php文件即可

添加字段

1
2
<?php
$this->addColumn('t_category','sort',$this->integer()->defaultValue(0)->notNull()->comment('排序'));

添加索引

1
2
<?php
$this->createIndex('sort','t_category',['sort']);

添加唯一索引

1
2
<?php
$this->createIndex('sort','t_category',['sort'],true);

更新字段

1
2
<?php
$this->alterColumn('t_category','sort',$this->smallInteger()->defaultValue(0)->notNull()->comment('排序'));

删除字段

1
2
<?php
$this->dropColumn('t_category','sort');

删除表

1
2
<?php
$this->dropTable('t_category');
# yii

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×