1 Schema::create('consults', function (Blueprint $table) { 2 $table->increments('id'); 3 $table->string('sex'); 4 $table->unsignedInteger('birth_year'); 5 $table->string('phone', 150); 6 $table->string('discomfort')->comment(''); 7 $table->string('disease_condition')->comment(''); 8 $table->string('help')->comment(''); 9 $table->boolean('state')->default(false)->comment('true:已回復; false:待回復'); 10 $table->boolean('is_read')->comment(''); 11 $table->timestamps(); 12 13 $table->unsignedInteger('user_id')->nullable(); 14 $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 15 });

列類型
在前面的示例中,我們指定的名稱列的類型為"string"。但這是什么意思?數據庫中通常沒有”string”類型的列。
請記住,Laravel 試圖使您的應用程序獨立於底層的數據庫;例如,如果你想,你可以使用 MySql 開發並部署到 Postgresql。如果您在遷移中使用 MySql 的列類型,應用到 Postgres 數據庫可能無法工作。所以,Laravel 遷移通過使用通用的數據類型使你與底層的數據庫類型系統隔離。如果我們要遷移 MySql 數據庫, string()方法將創建VARCHAR(255)類型的列。在 Postgres,同一遷移可能會添加CHAR VARYING(255)類型的列 (雖然VARCHAR類型支持所有主要的數據庫平台)。
Laravel 直接支持以下數據類型:
| Laravel 方法 |
列的類型 |
| increments($column) |
向表中添加自動遞增的主鍵 |
| string($column) |
添加一個VARCHAR(255)列 |
| string($column, $length) |
添加具有長度的VARCHAR |
| integer($column) |
向表中添加一個INTEGER列, |
| float($column) |
向表中添加一個FLOAT的列 |
| decimal($column, $precision, $scale) |
添加一個DECIMAL列的精度和小數位數。精度是總數中數字的位數。規模是小數點的右側的位數。例如,數 123.45 具有精度為 5 和 2 的小數。從邏輯上講,規模不能大於精度。 |
| boolean($column) |
向表中添加一個BOOLEAN的列。注意: 存儲布爾值的方式而有所不同從一個數據庫到另一個數據庫。一些使用"1"和"0"的整數值來表示 true 和 false,個別的,其他人使用"T"和"F"等字符。Laravel 的"boolean"類型映射到數據庫的所有系統上的small integer列。Laravel 很好的處理 PHP 的true與false之間的映射,所以你不需要擔心。 |
| text($column) |
相當於表的TEXT |
| blob($column) |
相當於表的BLOB |
| binary($column) |
相當於表的BINARY |
| dateTime($column) |
相當於表DATETIME |
| timestamp($column) |
相當於表TIMESTAMP |
| date($column) |
相當於表的DATE |
| time($column) |
相當於表的TIME |
| enum($column, array $allowed) |
在表上創建一個新的ENUM列 |
此外,還有幾個你需要知道的擴展方法:
| Laravel 方法 |
列的類型 |
| timestamps() |
timestamps()與timestamp()不同。它是一個 Laravel 用來管理創建和修改作為created_at和updated_at TIMESTAMP列的便利方法。他們是 Laravel 可以自己修改的兩個特殊的數據庫列。created_at列為僅當行被創建時當前時間戳。另一方面, updated_at被修改為每次操作的行的數據時當前時間戳。 |
| nullable() |
將指定列允許NULL值。默認情況下,Laravel 使在數據庫級別需要通過添加NOT NULL約束的列。 |
| default($value) |
設置要用於新行作為初始值的列的默認值。你永遠不需要顯式設置的默認值為 null。不設置它默認值就為null。 |
| unsigned() |
設置INTEGER列為UNSIGNED。
|
