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:rollback
或php 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欄位建立一般索引 |
沒有留言:
張貼留言