iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
2
自我挑戰組

Laravel 學習歷程系列 第 17

Day17 【Laravel 學習歷程】- Migration 資料庫遷移(下)

昨天講了Migration 資料庫遷移,但沒有提到資料結構部分
今天就實際加上資料結構的設定來試試看

打開前幾天新增role的遷移檔,
https://ithelp.ithome.com.tw/upload/images/20181101/20111531l3ozbm2geA.jpg
在這個遷移檔裡面可以看到有兩個function
分別為updown
還記得在昨天的Day16 【Laravel 學習歷程】- Migration 資料庫遷移我們有提到
我們透過遷移檔建立資料結構,建立完後下遷移指令

php artisan migrate:make create_role_table --create=role

而在function up()裡面就是要做建立資料結構這件事
如上圖他們會先預設幫我們固定建立2個欄位

$table->increments('id');
$table->timestamps();

來了解一下他的資料欄位型態

指令 功能描述
$table->bigIncrements('id'); ID 自動增量,使用相當於「big integer」型態
$table->bigInteger('votes'); 相當於 BIGINT 型態
$table->binary('data'); 相當於 BLOB 型態
$table->boolean('confirmed'); 相當於 BOOLEAN 型態
$table->char('name', 4); 相當於 CHAR 型態
$table->date('created_at'); 相當於 DATE 型態
$table->dateTime('created_at'); 相當於 DATETIME 型態
$table->decimal('amount', 5, 2); 相當於 DECIMAL 型態,並帶有精度與尺度
$table->double('column', 15, 8); 相當於 DOUBLE 型態
$table->enum('choices', array('foo', 'bar')); 相當於 ENUM 型態
$table->float('amount'); 相當於 FLOAT 型態
$table->increments('id'); 相當於 Incrementing 型態(資料表主鍵)
$table->integer('votes'); 相當於 INTEGER 型態
$table->longText('description'); 相當於 LONGTEXT 型態
$table->mediumInteger('numbers'); 相當於 MEDIUMINT 型態
$table->mediumText('description'); 相當於 MEDIUMTEXT 型態
$table->morphs('taggable'); 加入整數 taggable_id 與字串 taggable_type
$table->nullableTimestamps(); timestamps() 相同,但允許 NULL
$table->smallInteger('votes'); 相當於 SMALLINT 型態
$table->tinyInteger('numbers'); 相當於 TINYINT 型態
$table->softDeletes(); 加入 deleted_at 欄位於軟刪除使用
$table->string('email'); 相當於 VARCHAR 型態 equivalent column
$table->string('name', 100); 相當於 VARCHAR 型態,並指定長度
$table->text('description'); 相當於 TEXT 型態
$table->time('sunrise'); 相當於 TIME 型態
$table->timestamp('added_on'); 相當於 TIMESTAMP 型態
$table->timestamps(); 加入 created_atupdated_at 欄位
$table->rememberToken(); 加入 remember_token 使用 VARCHAR(100) NULL
---- ----
->nullable() 標示此欄位允許 NULL
->default($value) 宣告此欄位的預設值
->unsigned() 設定整數是無分正負

依上表新增我們資料表要新增的欄位後,
再在cmd下指令就可以遷移上去了


昨天也有提到,遷移錯了還可以重新rollback
然而function down()就是要幫我們做這件事情
如果是要rollback整張表就是如預設提供

Schema::dropIfExists('roles');

or
假如我們只是想rollback其中一個欄位

Schema::table('roles', function(Blueprint $table)
{
    $table->dropColumn('id');
});

Migrations差不多就是這樣了


參考資料


上一篇
Day16 【Laravel 學習歷程】- Migration 資料庫遷移(上)
系列文
Laravel 學習歷程17

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-23 02:33:32

哎呀 斷惹 可惜QQ

我要留言

立即登入留言