:::

6. 修改使用者資料表

一、建立migration檔案來修改使用者資料表

  1. Laravel 有自帶一個users的資料表,我們在第3單元做 建立使用者認證 的就是,不過,由於我們還需要使用者(買家)姓名、電話、地址...等資訊,加上我們沒有多餘時間可以製作另一個收貨地址的資料表,所以,我們直接修改該users資料表來使用。
  2. 我們可以利用Laravel內建的 migration 機制來修改資料表欄位或定義,使用 migration 的好處是可以對資料庫的修改進行紀錄,並根據這些紀錄進行資料庫的版本控制。

  3. migration檔案就是用來定義資料表欄位的檔案,屆時可用指令自動建立(或增減)資料表欄位

    • 先確定 /專案/.env 中的資料庫設定有設定正確

    • 確定有啟動MySQL資料庫,並確定已經建立 DB_DATABASE 定義的資料庫

  4. 先來建立一個migration檔案,請按Ctrl+`,並執行:
    php artisan make:migration change_users_table
  5.  如此,會生出一個空白的檔案,如:\專案\database\migrations\2019_05_21_145904_change_users_table.php
    <?php
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class ChangeUsersTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            //
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            //
        }
    }
    
  6. 前面的日期是執行這個命令時自動加的,可以幫助 Laravel 判斷 migration 的先後順序。

二、修改migration檔案內容

  1. 我們將內容改成下方這樣,up()是執行時,要對資料庫做異動的地方;down()則是撤銷對資料庫的異動,也就是復原之意:
    <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class ChangeUsersTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::table('users', function (Blueprint $table) {
                // 在 password 欄位後面新增 address 欄位
                $table->string('address')->after('password');
                // 在 address 欄位後面新增 tel 欄位
                $table->string('tel')->after('address');
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::table('users', function (Blueprint $table) {
                $table->dropColumn('tel');
                $table->dropColumn('address');
            });
        }
    }
    
  2. 建立各種欄位類型可參考:https://learnku.com/docs/laravel/5.8/migrations/3928#creating-columns
  3. 替欄位加入各種屬性請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#column-modifiers
  4. 要修改欄位方法請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#55682c
  5. 各種索引的建立請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#b271e4
  6. 修改好之後,我們就可以執行以下指令來異動資料庫:
    php artisan migrate
  7. 這時後再去看一下資料庫結構,就會發現已經改變囉!
  8. 若想撤銷剛剛的動作,可執行:
    php artisan migrate:rollback
  9. 若想刪除全部資料表重來,可以執行

    php artisan migrate:reset

到GitHub觀看此單元程式異動


:::

書籍目錄

展開 | 闔起

http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D43%26tbdsn%3D1399

計數器

今天: 1487148714871487
昨天: 1416141614161416
總計: 7340134734013473401347340134734013473401347340134