:::
6. 修改使用者資料表
一、建立migration檔案來修改使用者資料表
- Laravel 有自帶一個
users的資料表,我們在第3單元做 建立使用者認證 的就是,不過,由於我們還需要使用者(買家)姓名、電話、地址...等資訊,加上我們沒有多餘時間可以製作另一個收貨地址的資料表,所以,我們直接修改該users資料表來使用。 -
我們可以利用Laravel內建的 migration 機制來修改資料表欄位或定義,使用 migration 的好處是可以對資料庫的修改進行紀錄,並根據這些紀錄進行資料庫的版本控制。
-
migration檔案就是用來定義資料表欄位的檔案,屆時可用指令自動建立(或增減)資料表欄位
-
先確定
/專案/.env中的資料庫設定有設定正確 -
確定有啟動MySQL資料庫,並確定已經建立 DB_DATABASE 定義的資料庫
-
- 先來建立一個migration檔案,請按Ctrl+`,並執行:
php artisan make:migration change_users_table - 如此,會生出一個空白的檔案,如:
\專案\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() { // } } - 前面的日期是執行這個命令時自動加的,可以幫助 Laravel 判斷 migration 的先後順序。
二、修改migration檔案內容
- 我們將內容改成下方這樣,
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'); }); } } - 建立各種欄位類型可參考:https://learnku.com/docs/laravel/5.8/migrations/3928#creating-columns
- 替欄位加入各種屬性請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#column-modifiers
- 要修改欄位方法請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#55682c
- 各種索引的建立請參考:https://learnku.com/docs/laravel/5.8/migrations/3928#b271e4
- 修改好之後,我們就可以執行以下指令來異動資料庫:
php artisan migrate - 這時後再去看一下資料庫結構,就會發現已經改變囉!

- 若想撤銷剛剛的動作,可執行:
php artisan migrate:rollback -
若想刪除全部資料表重來,可以執行
php artisan migrate:reset
5-2 將後台選單中文化的方法
