昨天講了Migration 資料庫遷移
,但沒有提到資料結構部分
今天就實際加上資料結構的設定來試試看
打開前幾天新增role
的遷移檔,
在這個遷移檔裡面可以看到有兩個function
,
分別為up
、down
還記得在昨天的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_at 和 updated_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
差不多就是這樣了