[ 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!



相關文章

初心者之路#01 – Laravel介紹 Laravel是什麼? 可以吃嗎(X 不能吃唷! 根據官方的說法,Laravel是一個PHP框架(Framework),專門為了熱愛簡潔、漂亮、優雅程式碼的你所打造的。 &nbs...
初心者之路#07 – Blade 實作 前言 在上一次我們介紹完Larave 的 Views, Blade Templates後,今天要來帶各位實作看看Blade Teamplates,讓大家可以對於這部分更加熟悉! 準備 h...
初心者之路#12 – Controller 控制器 前言 今天要來介紹的,是Laravel中的Controller,它做的事情就像先前提過的MVC中的Controller一樣,是用來處理網頁的要求邏輯。 在Laravel中,Controller...
初心者之路#06 – Views, Blade Templates 前言 之前在Laravel專案結構中跟各位介紹過MVC的概念,View就是在MVC中的V,負責的是網站界面的呈現,也是我們所熟知的前端。今天要來跟各位介紹的就是在Laravel中怎麼管理View,以...