iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
2

首先我們要先處理使用者這一塊,而使用者的部份雖然在開新的 Laravel 專案時已經預設有屬於它的 Model 和 Migration,不過我會在這次的專案修改成自己想要的樣子。

Migration 定義

由於是第1次提到這個詞,因此在此先來定義何謂 Migration。Migration 有點像是 git 版本控制的概念,migration 就是資料庫的版本控制,可以使得開發者更方便地建立資料表以及新增某資料表的欄位。至於詳細指令的部份可以參考文件,或是參考之後針對 post migration 的文章,因為到時候會是必須從頭開始建立 migration 的狀態。

User Migration

而這次要用到的 migration 在新增專案時已經有了,因此我們只需要修改它就可以。

在 database/migrations 路徑裡面,我們會最先看到兩個 migration,它們分別為 2014_10_12_000000_create_users_table.php2014_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

參考資料:

  1. Migrations : https://laravel.com/docs/6.x/migrations

上一篇
Day 08 : 專案規劃
下一篇
Day 10 : user ( Model )
系列文
從零開始的Laravel RESTful api30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言