通過Migration來建立資料表(一)
資料庫遷移(Migration)
Migration是資料庫結構的版本控制系統,
透過程式碼來定義資料庫的資料表、欄位、索引及鍵值,
開發時可以透過Migration確保資料庫結構異動的順序及完整性,
可以透過指令在幾秒內透過Migration建立一個全新的資料庫系統,
Migration檔案放在database/migrations/目錄下:
Laravel預設會建立三個Migration檔案,
而我們只要留下使用者資料表並修改就可以,
然後按照昨天的規畫將檔案改成以下這樣
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
//主鍵
$table->increments('id');
//姓名
$table->string('name', 50);
//帳號
$table->string('account', 50)->unique();
//密碼
$table->string('password', 60);
//類型
$table->integer('type')->default(0);
//性別
$table->tinyInteger('sex')->default(0);
//身高
$table->decimal('height')->default(0);
//體重
$table->decimal('weight')->default(0);
//興趣
$table->string('interest', 100)->default('');
//介紹
$table->string('introduce', 500)->default('');
//圖片
$table->string('picture', 50)->default('');
//啟用
$table->tinyInteger('enabled')->default(1);
//創建及修改日期
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
我們可以看到Migration中會有up()和down()的函數,
up()指的是在執行此次資料庫異動時要執行的動作
,
而down()指的是在復原up()所作的資料庫異動
,
up()及down()函數中的動作都是相對應的,
我們這個例子migration的目的是建立資料表,
up的目的就是建立users資料表
,
down就是刪除資料表
,
在up裡面可以看到建立資料表的一些語法
$table->increments('id');
代表要建立一個會自動增加的integer(整數)欄位, 欄位名稱是id
$table->string('account', 50)->unique();
代表要建立一個字串欄位, 欄位名稱名稱是account, 長度為50, 後面的unique代表他是不可重複的索引
$table->integer('type')->default(0);
代表我們要建立一個整數欄位, 欄位名稱名稱是type, 預設值是0
$table->tinyInteger('sex')->default(0);
代表我們要建立一個tinyint(短整數)欄位, 欄位名稱名稱是sex, 預設值是0
$table->decimal('height')->default(0);
代表我們要建立一個decimal(數值)欄位, 欄位名稱名稱是height, 預設值是0
$table->string('interest', 100)->default('');
代表要建立一個字串欄位, 欄位名稱名稱是interest, 長度為100, 預設值是空字串
$table->timestamps();
這行會自動增加兩個欄位:created_at跟updated_at,
這兩個欄位是Laravel的預設欄位,
分別是創建時間與更新時間,
Laravel會自己處理這兩個欄位,
不用特別寫在程式中,
通常只有在讀取資料的時候才會用到.