首先我們要先處理使用者這一塊,而使用者的部份雖然在開新的 Laravel 專案時已經預設有屬於它的 Model 和 Migration,不過我會在這次的專案修改成自己想要的樣子。
由於是第1次提到這個詞,因此在此先來定義何謂 Migration。Migration 有點像是 git 版本控制的概念,migration 就是資料庫的版本控制,可以使得開發者更方便地建立資料表以及新增某資料表的欄位。至於詳細指令的部份可以參考文件,或是參考之後針對 post migration 的文章,因為到時候會是必須從頭開始建立 migration 的狀態。
而這次要用到的 migration 在新增專案時已經有了,因此我們只需要修改它就可以。
在 database/migrations 路徑裡面,我們會最先看到兩個 migration,它們分別為 2014_10_12_000000_create_users_table.php
、2014_10_12_100000_create_password_resets_table.php
,而這次要客製化的部份就是 create_users_table
*2014_10_12_000000_create_users_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
其中 public function up()
為建立 migration 的函式,裡面就有包括我們要建立的 table 及其欄位名稱和型別,而 public function down()
為 reverse migration 的函式,此函式的功能則與 up() 相反。而這次我不會按照專案預設安排的 schema 進行,而是會再添加幾個欄位
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
// 添加欄位
$table->boolean('is_admin')->default(0);
$table->string('api_token', 80)->unique();
});
}
完成客製化之後,我們就將 database 進行 migration
$ php artisan migrate
若是在這之前已經 migrate 過的朋友,則執行以下指令:
$ php artisan migrate:refresh
<p.s> 在 Laravel 6.0 版時改成預設有三個 migration,新增的 migration 為 2019_08_19_000000_create_failed_jobs_table.php
參考資料: