跳到主內容

Laravel migration 可使用的欄位類型

可使用的欄位類型

資料庫 Schema 生成器包含表格常用的各種欄位類型,如下所列:

程式碼 說明
$table->id(); $table->bigIncrements('id') 的別名
$table->foreignId('user_id'); $table->unsignedBigInteger('user_id') 的別名
$table->bigIncrements('id'); 遞增 ID(主鍵),相當於「UNSIGNED BIG INTEGER」
$table->bigInteger('votes'); 相當於 BIGINT
$table->binary('data'); 相當於 BLOB
$table->boolean('confirmed'); 相當於 BOOLEAN
$table->char('name', 100); 相當於帶有長度的 CHAR
$table->date('created_at'); 相當於 DATE
$table->dateTime('created_at', 0); 相當於 DATETIME ,可以指定位數
$table->dateTimeTz('created_at', 0); 相當於 DATETIME (帶時區) ,可以指定位數
$table->decimal('amount', 8, 2); 相當於 DECIMAL,可以指定總位數和小數位數
$table->double('amount', 8, 2); 相當於 DOUBLE,可以指定總位數和小數位數
$table->enum('level', ['easy', 'hard']); 相當於 ENUM
$table->float('amount', 8, 2); 相當於 FLOAT,可以指定總位數和小數位數
$table->geometry('positions'); 相當於 GEOMETRY
$table->geometryCollection('positions'); 相當於 GEOMETRYCOLLECTION
$table->increments('id'); 遞增 ID(主鍵),相當於 UNSIGNED INTEGER
$table->integer('votes'); 相當於 INTEGER
$table->ipAddress('visitor'); 相當於 IP 地址
$table->json('options'); 相當於 JSON
$table->jsonb('options'); 相當於 JSONB
$table->lineString('positions'); 相當於 LINESTRING
$table->longText('description'); 相當於 LONGTEXT
$table->macAddress('device'); 相當於 MAC 地址
$table->mediumIncrements('id'); 遞增 ID(主鍵),相當於 UNSIGNED MEDIUMINT
$table->mediumInteger('votes'); 相當於 MEDIUMINT
$table->mediumText('description'); 相當於 MEDIUMTEXT
$table->morphs('taggable'); 相當於加入遞增 UNSIGNED BIGINT 類型的 taggable_id 與字串類型的 taggable_type
$table->uuidMorphs('taggable'); 相當於添加一個 CHAR (36) 類型的 taggable_id 欄位和 VARCHAR (255) UUID 類型的 taggable_type
$table->multiLineString('positions'); 相當於 MULTILINESTRING
$table->multiPoint('positions'); 相當於 MULTIPOINT
$table->multiPolygon('positions'); 相當於 MULTIPOLYGON
$table->nullableMorphs('taggable'); 添加一個可以為空版本的 morphs() 欄位
$table->nullableUuidMorphs('taggable'); 添加一個可以為空版本的 uuidMorphs() 欄位
$table->nullableTimestamps(0); timestamps() 方法的別名
$table->point('position'); 相當於 POINT
$table->polygon('positions'); 相當於 POLYGON
$table->rememberToken(); 添加一個允許空值的 VARCHAR (100) 類型的 remember_token 欄位
$table->set('flavors', ['strawberry', 'vanilla']); 相當於 SET
$table->smallIncrements('id'); 遞增 ID(主鍵),相當於 UNSIGNED SMALLINT
$table->smallInteger('votes'); 相當於 SMALLINT
$table->softDeletes('deleted_at', 0); 相當於為軟刪除添加一個可為空值的 deleted_at 欄位
$table->softDeletesTz('deleted_at', 0); 相當於為軟刪除添加一個可為空值的帶時區的 deleted_at 欄位
$table->string('name', 100); 相當於指定長度的 VARCHAR
$table->text('description'); 相當於 TEXT
$table->time('sunrise', 0); 相當於指定位數的 TIME
$table->timeTz('sunrise', 0); 相當於指定位數帶時區的 TIME
$table->timestamp('added_on', 0); 相當於指定位數的時間戳記
$table->timestampTz('added_on', 0); 相當於指定位數帶時區的時間戳記
$table->timestamps(0); 相當於添加可為空值的時間戳記類型的 created_at 和 updated_at
$table->timestampsTz(0); 相當於添加指定時區的可為空值的時間戳記類型的 created_at 和 updated_at
$table->tinyIncrements('id'); 相當於自動遞增 UNSIGNED TINYINT
$table->tinyInteger('votes'); 相當於 TINYINT
$table->unsignedBigInteger('votes'); 相當於 UNSIGNED BIGINT
$table->unsignedDecimal('amount', 8, 2); 相當於 UNSIGNED DECIMAL ,可以指定總位數和小數位數
$table->unsignedInteger('votes'); 相當於 UNSIGNED INTEGER
$table->unsignedMediumInteger('votes'); 相當於 UNSIGNED MEDIUMINT
$table->unsignedSmallInteger('votes'); 相當於 UNSIGNED SMALLINT
$table->unsignedTinyInteger('votes'); 相當於 UNSIGNED TINYINT
$table->uuid('id'); 相當於 UUID
$table->year('birth_year'); 相當於 YEAR

學習Laravel Migration,看這一篇就夠了 (pandalab.org)