# Laravel migration 可使用的欄位類型

#### 可使用的欄位類型

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

<table class="table table-striped" id="bkmrk-%E7%A8%8B%E5%BC%8F%E7%A2%BC-%E8%AA%AA%E6%98%8E-%24table-%3Eid%28%29%3B"><thead><tr><th>程式碼</th><th>說明</th></tr></thead><tbody><tr><td>$table-&gt;id();</td><td>$table-&gt;bigIncrements('id') 的別名</td></tr><tr><td>$table-&gt;foreignId('user\_id');</td><td>$table-&gt;unsignedBigInteger('user\_id') 的別名</td></tr><tr><td>$table-&gt;bigIncrements('id');</td><td>遞增 ID（主鍵），相當於「UNSIGNED BIG INTEGER」</td></tr><tr><td>$table-&gt;bigInteger('votes');</td><td>相當於 BIGINT</td></tr><tr><td>$table-&gt;binary('data');</td><td>相當於 BLOB</td></tr><tr><td>$table-&gt;boolean('confirmed');</td><td>相當於 BOOLEAN</td></tr><tr><td>$table-&gt;char('name', 100);</td><td>相當於帶有長度的 CHAR</td></tr><tr><td>$table-&gt;date('created\_at');</td><td>相當於 DATE</td></tr><tr><td>$table-&gt;dateTime('created\_at', 0);</td><td>相當於 DATETIME ，可以指定位數</td></tr><tr><td>$table-&gt;dateTimeTz('created\_at', 0);</td><td>相當於 DATETIME (帶時區) ，可以指定位數</td></tr><tr><td>$table-&gt;decimal('amount', 8, 2);</td><td>相當於 DECIMAL，可以指定總位數和小數位數</td></tr><tr><td>$table-&gt;double('amount', 8, 2);</td><td>相當於 DOUBLE，可以指定總位數和小數位數</td></tr><tr><td>$table-&gt;enum('level', \['easy', 'hard'\]);</td><td>相當於 ENUM</td></tr><tr><td>$table-&gt;float('amount', 8, 2);</td><td>相當於 FLOAT，可以指定總位數和小數位數</td></tr><tr><td>$table-&gt;geometry('positions');</td><td>相當於 GEOMETRY</td></tr><tr><td>$table-&gt;geometryCollection('positions');</td><td>相當於 GEOMETRYCOLLECTION</td></tr><tr><td>$table-&gt;increments('id');</td><td>遞增 ID（主鍵），相當於 UNSIGNED INTEGER</td></tr><tr><td>$table-&gt;integer('votes');</td><td>相當於 INTEGER</td></tr><tr><td>$table-&gt;ipAddress('visitor');</td><td>相當於 IP 地址</td></tr><tr><td>$table-&gt;json('options');</td><td>相當於 JSON</td></tr><tr><td>$table-&gt;jsonb('options');</td><td>相當於 JSONB</td></tr><tr><td>$table-&gt;lineString('positions');</td><td>相當於 LINESTRING</td></tr><tr><td>$table-&gt;longText('description');</td><td>相當於 LONGTEXT</td></tr><tr><td>$table-&gt;macAddress('device');</td><td>相當於 MAC 地址</td></tr><tr><td>$table-&gt;mediumIncrements('id');</td><td>遞增 ID（主鍵），相當於 UNSIGNED MEDIUMINT</td></tr><tr><td>$table-&gt;mediumInteger('votes');</td><td>相當於 MEDIUMINT</td></tr><tr><td>$table-&gt;mediumText('description');</td><td>相當於 MEDIUMTEXT</td></tr><tr><td>$table-&gt;morphs('taggable');</td><td>相當於加入遞增 UNSIGNED BIGINT 類型的 taggable\_id 與字串類型的 taggable\_type</td></tr><tr><td>$table-&gt;uuidMorphs('taggable');</td><td>相當於添加一個 CHAR (36) 類型的 taggable\_id 欄位和 VARCHAR (255) UUID 類型的 taggable\_type</td></tr><tr><td>$table-&gt;multiLineString('positions');</td><td>相當於 MULTILINESTRING</td></tr><tr><td>$table-&gt;multiPoint('positions');</td><td>相當於 MULTIPOINT</td></tr><tr><td>$table-&gt;multiPolygon('positions');</td><td>相當於 MULTIPOLYGON</td></tr><tr><td>$table-&gt;nullableMorphs('taggable');</td><td>添加一個可以為空版本的 morphs() 欄位</td></tr><tr><td>$table-&gt;nullableUuidMorphs('taggable');</td><td>添加一個可以為空版本的 uuidMorphs() 欄位</td></tr><tr><td>$table-&gt;nullableTimestamps(0);</td><td>timestamps() 方法的別名</td></tr><tr><td>$table-&gt;point('position');</td><td>相當於 POINT</td></tr><tr><td>$table-&gt;polygon('positions');</td><td>相當於 POLYGON</td></tr><tr><td>$table-&gt;rememberToken();</td><td>添加一個允許空值的 VARCHAR (100) 類型的 remember\_token 欄位</td></tr><tr><td>$table-&gt;set('flavors', \['strawberry', 'vanilla'\]);</td><td>相當於 SET</td></tr><tr><td>$table-&gt;smallIncrements('id');</td><td>遞增 ID（主鍵），相當於 UNSIGNED SMALLINT</td></tr><tr><td>$table-&gt;smallInteger('votes');</td><td>相當於 SMALLINT</td></tr><tr><td>$table-&gt;softDeletes('deleted\_at', 0);</td><td>相當於為軟刪除添加一個可為空值的 deleted\_at 欄位</td></tr><tr><td>$table-&gt;softDeletesTz('deleted\_at', 0);</td><td>相當於為軟刪除添加一個可為空值的帶時區的 deleted\_at 欄位</td></tr><tr><td>$table-&gt;string('name', 100);</td><td>相當於指定長度的 VARCHAR</td></tr><tr><td>$table-&gt;text('description');</td><td>相當於 TEXT</td></tr><tr><td>$table-&gt;time('sunrise', 0);</td><td>相當於指定位數的 TIME</td></tr><tr><td>$table-&gt;timeTz('sunrise', 0);</td><td>相當於指定位數帶時區的 TIME</td></tr><tr><td>$table-&gt;timestamp('added\_on', 0);</td><td>相當於指定位數的時間戳記</td></tr><tr><td>$table-&gt;timestampTz('added\_on', 0);</td><td>相當於指定位數帶時區的時間戳記</td></tr><tr><td>$table-&gt;timestamps(0);</td><td>相當於添加可為空值的時間戳記類型的 created\_at 和 updated\_at</td></tr><tr><td>$table-&gt;timestampsTz(0);</td><td>相當於添加指定時區的可為空值的時間戳記類型的 created\_at 和 updated\_at</td></tr><tr><td>$table-&gt;tinyIncrements('id');</td><td>相當於自動遞增 UNSIGNED TINYINT</td></tr><tr><td>$table-&gt;tinyInteger('votes');</td><td>相當於 TINYINT</td></tr><tr><td>$table-&gt;unsignedBigInteger('votes');</td><td>相當於 UNSIGNED BIGINT</td></tr><tr><td>$table-&gt;unsignedDecimal('amount', 8, 2);</td><td>相當於 UNSIGNED DECIMAL ，可以指定總位數和小數位數</td></tr><tr><td>$table-&gt;unsignedInteger('votes');</td><td>相當於 UNSIGNED INTEGER</td></tr><tr><td>$table-&gt;unsignedMediumInteger('votes');</td><td>相當於 UNSIGNED MEDIUMINT</td></tr><tr><td>$table-&gt;unsignedSmallInteger('votes');</td><td>相當於 UNSIGNED SMALLINT</td></tr><tr><td>$table-&gt;unsignedTinyInteger('votes');</td><td>相當於 UNSIGNED TINYINT</td></tr><tr><td>$table-&gt;uuid('id');</td><td>相當於 UUID</td></tr><tr><td>$table-&gt;year('birth\_year');</td><td>相當於 YEAR</td></tr></tbody></table>

[學習Laravel Migration，看這一篇就夠了 (pandalab.org)](https://pandalab.org/articles/105)