c:>baisc> yii migrate/create add_news_table
<?php use yii\db\Schema; use yii\db\Migration; class m160605_040139_add_news_table extends Migration { public function up() { } public function down() { echo "m160605_040139_add_news_table cannot be reverted.\n"; return false; } /* // Use safeUp/safeDown to run migration code within a transaction public function safeUp() { } public function safeDown() { } */ } ?>
m<YYMMDD_HHMMSS>_<Name>
<?php use yii\db\Schema; use yii\db\Migration; class m160605_040139_add_news_table extends Migration { public function up() { $this->createTable("news", [ "id" => Schema::TYPE_PK, "title" => Schema::TYPE_STRING, "content" => Schema::TYPE_TEXT, ]); } public function down() { $this->dropTable('news'); } /* // Use safeUp/safeDown to run migration code within a transaction public function safeUp() { } public function safeDown() { } */ } ?>
c:\>basic> yii migrate
c:\>basic> yii migrate 3
# 使用時間戳來指定遷移
c:\>basic> yii migrate/to 160606_105608
# 使用能夠通過 strtotime() 來解析的字串。
c:\>basic> yii migrate/to "2016-06-06 19:35:21"
# 使用全名
c:>basic> yii migrate/to m160606_193521_create_news_table
# 使用 UNIX timestamp
c:\basic> yii migrate/to 1399964718
c:\basic> yii migrate/down
c:\>basic> yii migrate/down 5
c:\basic> yii migrate/redo
yii migrate/new # 顯示前10個新遷移
yii migrate/new 3 # 顯示出前3個新遷移
yii migrate/new all # 顯示所有新遷移
yii migrate/history # 顯示最近10個提交應用遷移
yii migrate/history 20 # 顯示最近20個提交應用遷移
yii migrate/history all # 顯示所有的應用遷移
c:\>basic> yii migrate/create add_category_to_news
<?php use yii\db\Schema; use yii\db\Migration; class m160113_110909_add_category_to_news extends Migration { public function up() { $this->addColumn('news', 'category', $this->integer()); } public function down() { $this->dropColumn('news', 'category'); } } ?>
當執行資料庫遷移,重要的是要確保每個遷移成功或失敗。建議在資料庫操作中使用事務處理。要實現事務遷移,需要把遷移程式碼放在 safeUp()和 safeDown()方法中。如果這些方法中的任何操作失敗,所有以前的操作將被回滾。
<?php use yii\db\Schema; use yii\db\Migration; class m160113_110909_add_category_to_news extends Migration { public function safeUp() { $this->addColumn('news', 'category', $this->integer()); } public function safeDown() { $this->dropColumn('news', 'category'); } } ?>
execute() ? 執行原始的SQL語句
createTable() ? 建立一個表
renameTable() ? 重新命名表
insert() ? 插入一行
batchInsert() ? 插入多行
update() ? 更新多行
delete() ? 刪除多行
addColumn() ? 新增一列
renameColumn() ? 重新命名一列
dropColumn() ? 刪除一列
alterColumn() ? 修改一列
dropTable() ? 刪除一個表
truncateTable() ? 刪除表中的所有行
createIndex() ? 建立一個索引
dropIndex() ? 刪除一個索引
addPrimaryKey() ? 新增主鍵
dropPrimaryKey() ? 刪除主鍵
addForeignKey() ? 新增一個外來鍵
dropForeignKey() ? 刪除一個外來鍵