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