Laravel 生成migration ,boolean字段字段轉為tinyInteger


 

 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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM