[ Laravel ] 初心者之路#10 – Migrations 和 Schema

標籤: , , ,

前言

在前一篇[ Laravel ] 初心者之路#09 – Database in Laravel我們了解到如何透過Laravel提供的SQL方法以及Model來對資料庫進行存取

現在,我們要來看看該如何建立一個資料庫

在Laravel中有一項功能是Migrations,它就像是資料庫的版本控制一樣,讓你可以更方便的修改資料庫結構並與其他人共享

通常Migrations會搭配Laravel Schema來建立資料庫的結構

為了建立我們實作所需的資料庫,我們這次最主要要講的就是透過Migrations與Schema建立資料庫結構

 

產生Migration

在Artisan的make指令中,有許多方便我們快速建立class檔案的指令

你可以在命令列中輸入來產生

php artisan make:controller
php artisan make:migration
php artisan make:model
.
.
.

 

我們今天要介紹的是 make:migration

php artisan make:migration create_products_table
php artisan make:migration create_products_table --create=products
php artisan make:migration create_products_table --table=products

 

透過這樣的指令,我們就可以建立一個叫做create_products_table的migration檔案

指令說明如下

php artisan make:migration {action}_{table name}_table //建立migration檔案
--create=[table name] // 會自動幫你產生建立table的Schema
--table=[table name] //會自動幫你產生修改table的Schema

 

Migration的結構

當我們建立好一個migration檔案,它的結構大概是這樣

class CreateProductsTable extends Migration
{
    public function up()
    {
       // ...
    }
    public function down()
    {
        // ...
    }
}

 

它有up跟down兩種方法

up被用於新增資料表、欄位、索引到你的資料庫

down被用於回朔up的動作

 

建立資料表

前面提到up方法被用於新增資料表、欄位、索引到你的資料庫

所以我們如果要建立資料表,必須把程式寫在up中

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->text('description');
        $table->unsignedInteger('price');
        $table->timestamps();
    });
}

 

如同上面的程式碼,你可以用簡單的指令,就建立起一個table

可用的欄位型態有很多

  • increments(‘id’)
  • integer(‘votes’)
  • tinyInteger(‘votes’)
  • string(‘name’);
  • text(‘description’)
  • time(‘sunrise’)
  • dateTime(‘created_at’)

更多可以參考官方文件

 

執行Migrations

當寫好migrations的內容後 (up, down)

你想要去執行時,可以在命令列使用以下指令

 

執行所有未完成的migrations

php artisan migrate

 

還原最後的migration動作

php artisan migrate:rollback

 

還原指定次數的migration動作

php artisan migrate:rollback --step=5

 

還原所有的migrations

php artisan migrate:reset

 

還原所有的migrations,然後執行migrate的指令

php artisan migrate:refresh

 

移除資料庫中的所有資料表,然後執行migrate的指令

php artisan migrate:fresh

 

補充

各位如果有自行操作時,執行migrate可能會有錯誤發生

這是因為你們可能還沒有建立資料庫

或是沒有在.env中設定好DB的相關設定

導致專案無法正確連接上資料庫

去執行migration的動作

 

如果有問題的人也別擔心

我們會在下一篇帶大家實作這些部分

 

總結

今天跟各位簡單介紹了

  • 如何產生Migrations
  • Migration的結構說明
  • 透過Schema建立資料表
  • 執行寫好的Migrations

 

這次講解就到這邊,想要了解更多也可以參考官方的文件

See you next time!



相關文章

初心者之路#06 – Views, Blade Templates 前言 之前在Laravel專案結構中跟各位介紹過MVC的概念,View就是在MVC中的V,負責的是網站界面的呈現,也是我們所熟知的前端。今天要來跟各位介紹的就是在Laravel中怎麼管理View,以...
初心者之路#12 – Controller 控制器 前言 今天要來介紹的,是Laravel中的Controller,它做的事情就像先前提過的MVC中的Controller一樣,是用來處理網頁的要求邏輯。 在Laravel中,Controller...
初心者之路#07 – Blade 實作 前言 在上一次我們介紹完Larave 的 Views, Blade Templates後,今天要來帶各位實作看看Blade Teamplates,讓大家可以對於這部分更加熟悉! 準備 h...
初心者之路#09 – Database in Laravel 前言 今天要跟各位介紹的,是在Laravel中該如何存取資料庫。 在Laravel中,可以透過原生的SQL以及Laravel提供的查詢指令,或是Eloquent ORM的方式,來存取資料。 ...