iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
1
Modern Web

30天成為Laravel萌新系列 第 16

30天成爲Laravel萌新(第15天) - 建立資料庫Migration

  • 分享至 

  • xImage
  •  

要把文章存入資料庫?那麼對於傳統關聯式資料庫,需要先建立資料表Schema。你可以透過明天要介紹的資料庫管理工具,也可以透過今天來來說的使用 Artisan 建立資料表。

使用Artisan建立資料表

Artisan可以快速的建立控制器基本模板,同樣也可以建立資料庫相關模板:

artisan make:migration create_blog_post_table

透過上面命令,會在database/migrations新增相關檔案,檔名由<日期><時間>_create_blog_post_table組成。前面時間相關的在某些情況下會很重要,後面介紹的 artiasn 命令會依序建立資料表,所以如果資料表有相互依賴就有影像。現在我們開啟該檔案看看:

<?php

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

class CreateBlogPostTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('blog_post', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('blog_post');
    }
}

其中最重要兩行:

$table->bigIncrements('id');
$table->timestamps();

第一個是預設的主鍵;第二個是預設會建立與時間相關的欄位,包含建立交易時間、更新交易時間。現在再簡單加上 標題文章內容 欄位:

$table->string("title")->comment('標題');
$table->longText("content")->comment('文章內容');
//$table->string('author')->comment("作者");

此外,未來還可以加上 作者 欄位,甚至 標籤類別 等,現在就簡單來就好。

最後,透過下面命令,就可以實際建立資料表:

artisan migrate:refresh

[2020/10/24 update] Note: 最近在面試,才發現這邊有些沒說清楚的部份。
一般而言,只要使用artisan migrate就好。加上refresh會清除資料庫內的資料,也就是完全刪除資料表後重新建立。通常,只有在已存在的資料與新的schema不相容,無法更新時才使用。但其實這樣做也會造成許多問題(畢竟資料被清掉了阿),實務上應該不經常這樣做。
開發上使用mock,自動填充假資料可能還不是問題。反正,提醒一下 加上refresh會將資料庫內的資料清除

※ Laravel還可以建立哪些的資料類型?可以參考此頁面。不過實際也與使用的資料庫有關,譬如json可能就無法在早期的MariaDB裡使用。


上一篇
30天成爲Laravel萌新(第14天) - 控制器(Controller)
下一篇
30天成爲Laravel萌新(第16天) - 資料庫管理工具(上)‧使用phpMyAdmin
系列文
30天成為Laravel萌新32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言