[ Laravel ] 初心者之路#11 – 透過Migration建立Datebase實作

前言

今天將會利用上一次[ Laravel ] 初心者之路#10 – Migrations 和 Schema的內容,利用Migration帶各位建立目前專案的資料庫結構

 

建立Database

要透過Migration建立各個資料表,首先我們要有資料庫

所以先確認你啟動了mysql服務

open_mysql.jpg

 

然後你就可以透過圖形化介面來建立資料庫

用瀏覽器開啟 http://localhost/phpmyadmin/

選擇左邊的新增

create_db_01.jpg

 

然後輸入資料庫名稱,選擇編碼為 utf8-general_ci ,然後建立

create_db_02.jpg

 

資料庫建立完成!

 

Laravel資料庫設定

建立完資料庫後,我們必須讓laravel專案知道要使用哪個資料庫,以及設定連接的帳號密碼

所以必須打開.env進行資料庫設定

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=coffee_shop  // 資料庫名稱
DB_USERNAME=root         // 連接資料庫時所需的帳號
DB_PASSWORD=             // 連接資料庫時所需的密碼

設定完成!

 

 

資料庫結構分析

讓我們先看看該建立哪些資料表

database_structure.jpg

 

這是我大概根據這前端頁面的架構,去設計的資料庫結構

各位可以參考看看

 

建立Migrations Files

前置作業都完成了,來正式開始建立migrations吧

先透過以下指令,在命令列建立migrations檔案

php artisan make:migration create_website_table --create
php artisan make:migration create_home_table --create
php artisan make:migration create_about_table --create
php artisan make:migration create_products_table --create
php artisan make:migration create_store_table --create

好了之後,我們就可以在 database/migrations 下看到5個檔案

多餘的2個檔案 create_users_table 跟 create_password_resets_table

我們用不到,將其刪除

好了之後,資料夾會長這樣

各位的檔案前綴時間會跟我不一樣,因為它是根據當前建立的時間自動產生

migrations_files.jpg

 

建立欄位

再來根據上面我設計的資料庫結構圖

來建立各個資料表的欄位

首先打開 create_website_table

輸入以下程式碼

Schema::create('website', function (Blueprint $table) {
    $table->increments('id');    // 自動遞增相當於 UNSIGNED INTEGER(主鍵)欄位
    $table->string('title');     // 相當於 VARCHAR 欄位
    $table->string('subtitle');
    $table->string('footer');
});

 

再來打開 create_home_table

Schema::create('home', function (Blueprint $table) {
    $table->increments('id');
    $table->text('content_1');    // 相當於 TEXT 欄位
    $table->text('content_2');
    $table->string('image');      // 用來存image路徑的欄位
});

 

 

再來打開 create_about_table

Schema::create('about', function (Blueprint $table) {
    $table->increments('id');
    $table->text('content');
    $table->string('image');
});

 

再來打開 create_products_table

Schema::create('products', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->string('subtitle');
    $table->string('image');
    $table->text('description');
});

 

最後是 create_store_table

Schema::create('store', function (Blueprint $table) {
    $table->increments('id');
    $table->time('sun_open')->nullable();      // 相當於 TIME 欄位,可以為null
    $table->time('sun_close')->nullable();
    $table->time('mon_open')->nullable();
    $table->time('mon_close')->nullable();
    $table->time('tue_open')->nullable();
    $table->time('tue_close')->nullable();
    $table->time('wed_open')->nullable();
    $table->time('wed_close')->nullable();
    $table->time('thu_open')->nullable();
    $table->time('thu_close')->nullable();
    $table->time('fri_open')->nullable();
    $table->time('fri_close')->nullable();
    $table->time('sat_open')->nullable();
    $table->time('sat_close')->nullable();
    $table->string('address');
    $table->string('phone');
});

 

執行Migrate

將程式都寫完之後

我們就可以使用指令產生所有的資料表啦!

php artisan migrate

 

讓我們看看phpmyadmin裡面怎麼樣

table_done.jpg

登登,所有資料表都依照我們所寫的欄位需求,自動產生完畢囉~

 

總結

這次我們透過migrations實作了資料庫結構的建立

  • 用phpmyadmin圖形化介面建立資料庫
  • .env資料庫設定
  • 用artisan make建立migrations files
  • 建立各個table的欄位
  • 執行migrate自動產生資料表

這次的實作就到這邊啦

See you!

Leave a Comment