iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
1
Software Development

後端新手 使用laravel 從零開始 到開出api系列 第 10

Day10 使用laravel migration功能 讓你快速佈署資料庫! 上篇

  • 分享至 

  • xImage
  •  

Day10 使用laravel migration功能 讓你快速佈署資料庫! 上篇

在laravel專案中,建立資料表很方便,尤其是專案上雲端後,可以很快速的佈署,今天就介紹migration功能,順便講解我目前的專案規劃的關聯式資料表吧。

1. 建立資料庫連線 設定.env檔案

首先,請先再.env裏面設定好連線。
輸入database的帳密。laravel會幫你連到database,假設是使用mysql資料庫。

  • 範例:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE='Task_Management'
DB_USERNAME=root
DB_PASSWORD=123456789
  • DB_CONNECTION : 看你使用的資料庫,範例中是使用mysql
  • DB_HOST:資料庫若是再別的主機再另行設定
  • DB_PORT:資料庫若是再別的主機再另行設定
  • DB_DATABASE:資料庫名稱
  • DB_USERNAME:帳號
  • DB_PASSWORD:密碼

設定完之後,請在mysql中新增一個資料庫,名稱和.env中設定的名稱一樣

提醒:若是使用php artisan serve在做開發,修改.env後必須重開php artisan serve這樣設定才會生效喔

2. 新增migration

php artisan make:migration {name}

下完指令後,會新增一個檔案在database/migrations/ 內

  • 內容:

這個範例是我專案的其中一個migration

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class Users extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('username');
            $table->string('email');
            $table->string('password');
            $table->string('image')->nullable();
            $table->char('remember_token', 100);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}
  • 說明:
    將建立table的設定寫在function up() 裏面
  1. Schema::create('users', function (Blueprint $table) {
    建立新的名為users的table
  2. $table->id();
    建立column主鍵(primary key),並且為自動遞增。
  3. $table->string('username');
    建立名為username的column , type 為字串
  4. $table->string('image')->nullable();
    名為image的column,type為字串,並且允許為空值
  5. $table->char('remember_token', 100);
    名為remember_token的column,最大值為100字元
  6. $table->timestamps();
    建立create_at、update_at的column,type為date。create_at會在新增時自動紀錄時間,update_at會再更新時自動紀錄時間。

laravel提供許多函式,可以很方便的設定資料表,想知道更多詳細,可以去官方網站上找,我這邊就不多做介紹了。我建議建立資料表時,最基本可以加上$table->id();$table->timestamps();這兩個欄位,會比較方便操作資料庫喔。

建立table

新增好之後只要下指令

php artisan migrate

laravel就會自動幫你將table建立好了

另外,若是你想要單獨migrate一個檔案,可以使用

php artisan migrate --path={檔案路徑}

重新建立table

在重建table時,或許你會遇到**Nothing to migrate.**這訊息,而不讓你建立table
使用migrate建立table會依照建立的時間先後順序建立table
可以使用這個指令看到:

php artisan migrate:status

然後你可以使用

php artisan migrate:rollback

回復成未建立的狀態,但是記得資料庫內的table需要手動刪除,刪除後即可再次使用migrate重建表單

若是你想要重新建立所有table,可以使用

php artisan migrate:refresh

這個指令會將你所有的table都刪除,再重新建立所有table


migration這個功能剛開始用的時候比起原生是有點綁手綁腳的,但是只要設定好之後,別人在github上clone下你的專案,可以一鍵直接建立所有table,真的是很方便,這就是laravel這個功能強大之處。今天就介紹到這邊吧,明天見!


上一篇
Day9 先別急著寫code,專案開始前的設計
下一篇
Day11 使用laravel migration功能 讓你快速佈署資料庫! 下篇
系列文
後端新手 使用laravel 從零開始 到開出api30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言