學習足跡

2013年7月4日 星期四

Laravel 4 Migrate介紹

php artisan migrate指令

在命令列輸入php artisan後,可以看到migrate指令

$ php artisan
migrate
  migrate:install    Create the migration repository
  migrate:make       Create a new migration file
  migrate:refresh    Reset and re-run all migrations
  migrate:reset      Rollback all database migrations
  migrate:rollback   Rollback the last database migration

migrate指令用途


指令 說明
migration 執行尚未執行的migration
migrate:install 在資料庫建立migration管理資料表
migrate:make 建立新的migration檔案
migrate:refresh 重設資料庫所有的migration,並重新執行所有的migration
migrate:reset  重設資料庫所有的migration
migrate:rollback 復原最後一筆migration紀錄




建立migrate檔案

使用php artisan migrate:make指令,建立一個使用者資料表的migration

$ php artisan migrate:make create_users_table --table=users --create
Created Migration: 2013_07_04_151028_create_users_table
Generating optimized class loader
Compiling common classes 
app\database\migrations目錄中可以看到剛剛建立的2013_07_04_151028_create_users_table.php檔案,檔案內容如下:


我們可以看到檔案中有up()down()這兩個方法

在我們執行php artisan migration時,會執行up()方法中的程式

當我們執行php artisan migration:rollbackphp artisan migration:reset等重置指令時,會執行down()方法中的程式

up代表的是執行,down代表的是復原


建立資料表的方法

我們可以在Class Illuminate\Database\Schema\Blueprint中找到資料庫建立相關的指令方法,下列是KeJyun整理的方法列表:

Blueprint


指令 參數 說明
create 建立資料表
drop 移除資料表
dropIfExists 如果資料表存在,則移除資料表
dropColumn 欄位名稱
  • 字串
  • 陣列
移除欄位
renameColumn 變更前欄位名稱
  • 字串
變更後欄位名稱
  • 字串
重新命名欄位
dropPrimary 索引名稱
  • 字串
  • 陣列
移除主鍵索引
dropUnique 索引名稱
  • 字串
  • 陣列
移除唯一值索引
dropIndex 索引名稱
  • 字串
  • 陣列
移除一般索引
dropForeign 外來鍵名稱
  • 字串
移除外來鍵關聯
dropTimestamps 移除時間戳記
rename 重新命名資料表名稱
  • 字串
重新命名資料表
primary 主鍵名稱
  • 字串
  • 陣列
設定主鍵
unique 唯一鍵名稱
  • 字串
  • 陣列
設定唯一鍵
index 索引名稱
  • 字串
  • 陣列
設定一般索引鍵
foreign 外來鍵名稱
  • 字串
  • 陣列
設定外來鍵
increments 欄位名稱
  • 字串
設定自動增加欄位(型態 Integer)
bigIncrements 欄位名稱
  • 字串
設定自動增加欄位(型態 BigInteger)
string 欄位名稱
  • 字串
字串長度
  • 整數
設定varchar欄位
text 欄位名稱
  • 字串
設定text欄位
integer 欄位名稱
  • 字串
設定Int欄位
bigInteger 欄位名稱
  • 字串
設定BigInt欄位
mediumInteger 欄位名稱
  • 字串
設定MediumInt欄位
tinyInteger 欄位名稱
  • 字串
設定TinyInt欄位
smallInteger 欄位名稱
  • 字串
設定SmallInt欄位
unsignedInteger 欄位名稱
  • 字串
是否自動增加
  • 布林
設定Int欄位(非負整數)
unsignedBigInteger 欄位名稱
  • 字串
是否自動增加
  • 布林
設定BigInt欄位(非負整數)
float 欄位名稱
  • 字串
精準度
  • 整數
小數位數
  • 整數
設定Float欄位
decimal 欄位名稱
  • 字串
精準度
  • 整數
小數位數
  • 整數
設定Decimal欄位
boolean 欄位名稱
  • 字串
設定Boolean欄位
enum 欄位名稱
  • 字串
允許值
  • 陣列
設定Enum欄位
date 欄位名稱
  • 字串
設定Date欄位
dateTime 欄位名稱
  • 字串
設定Datetime欄位
time 欄位名稱
  • 字串
設定Time欄位
timestamp 設定Timestamp欄位
softDeletes 設定微刪除的deleted_at欄位
binary 欄位名稱
  • 字串
設定Binary欄位
dropIndexCommand 命令
  • 字串
類型
  • 字串
索引
  • 字串
  • 陣列
移除索引指令
indexCommand 類型
  • 字串
欄位
  • 字串
  • 陣列
索引
  • 字串
索引指令
createIndexName 類型
  • 字串
欄位
  • 陣列
增加索引名稱
addColumn 類型
  • 字串
名稱
  • 字串
參數
  • 陣列
增加欄位
addCommand 名稱
  • 字串
參數
  • 陣列
增加指令
createCommand 名稱
  • 字串
參數
  • 陣列
建立指令
getTable 取得資料表
getColumns 取得欄位
getCommands 取得指令

範例

整數(Integer)

指令 說明
$table->unsignedInteger('id' , true); 建立自動增加編號(auto increment)的非負Integer型態欄位
$table->unsignedInteger('id')->default('0'); 建立非負Integer型態欄位,預設值為0
$table->integer('id')->default('0'); 建立Integer型態欄位,預設值為0
$table->unsignedInteger('id')->unique(); 建立非負Integer型態欄位,並設定唯一值的索引
$table->unsignedInteger('id')->index()->default('0'); 建立非負Integer型態欄位,並設定基本的索引,預設值為0
$table->mediumInteger('id')->unsigned()->default('1'); 建立非負MediumInt型態欄位,預設值為1
$table->tinyInteger('id')->unsigned()->default('0'); 建立非負TinyInt型態欄位,預設值為0


字串(String)

指令 說明
$table->string('name' , 200)->unique(); 建立varchar(200)型態欄位,並設定唯一值的索引
$table->string('name' , 30)->default('0'); 建立varchar(30)型態欄位,預設值為0
$table->text('description'); 建立text型態欄位


時間(Time)

指令 說明
$table->timestamps(); 建立名稱為created_at及updated_at這兩個欄位,並使用datetime型態欄位
$table->dateTime('time')->default('0000-00-00 00:00:00'); 建立datetime型態欄位,預設值為0000-00-00 00:00:00
$table->date('date')->default('0000-00-00'); 建立date型態欄位,預設值為0000-00-00
$table->time('time')->default('00:00:00'); 建立time型態欄位,預設值為00:00:00
$table->softDeletes(); 建立名稱為deleted_at這個欄位,並使用datetime型態欄位


索引(Index)

指令 說明
$table->primary('id'); 對id欄位建立主鍵索引
$table->primary(array('id','email')); 對id及email欄位建立主鍵值索引
$table->unique('id'); 對id欄位建立唯一值索引
$table->unique(array('id','email')); 對id及email欄位建立唯一值索引
$table->index('id'); 對id欄位建立一般索引
$table->index(array('id','email')); 對id及email欄位建立一般索引


參考資料









沒有留言:

張貼留言