更新於 2024/12/13閱讀時間約 10 分鐘

Laravel 教學(如何建立並操作 Model 資料表)

Laravel 中,操作資料庫的核心是透過 Model 來進行的。Model 不僅負責與資料表進行溝通,它還提供了一個簡單而直觀的方式來進行資料庫的增、刪、改、查等操作。今天,將學習如何建立 Model,創建資料表,並且如何在路由中進行資料操作。

一、建立 Model

在 Laravel 中,建立 Model 可以使用 Artisan 命令。當你創建一個新的 Model 時,通常它對應的是資料表的單數型態,而資料表則是複數型態,命名的時候可能需要區分。

1. 使用 Artisan 創建 Model

首先,打開你的終端機,進入你的 Laravel 專案目錄,然後執行以下命令:

php artisan make:model News

這個命令會在 app/Models/ 目錄下創建一個新的 News Model。接下來,你可以開始撰寫這個 Model。

2. 編輯 Model

開啟 app/Models/News.php 檔案,並根據需要進行編輯。以下是創建 News Model 的範例:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class News extends Model
{
use HasFactory;

// 1. 指定資料表名稱,預設會使用單數型態並轉換成複數型態
protected $table = 'news';

// 2. 可以讓哪些欄位被批量賦值
protected $fillable = [
'title', // 標題欄位
'content', // 內容欄位
];
}

註解解析:

  • protected $table = 'news'; 這一行指定了 Model 對應的資料表名稱。如果資料表名稱和 Model 名稱不同,可以透過這個屬性來修改。
  • protected $fillable = ['title', 'content']; 這一行定義了哪些欄位可以進行批量賦值。這樣我們就可以通過 create 方法將資料直接插入資料庫。

二、建立資料表的遷移檔

在 Laravel 中,資料表結構是透過遷移來管理的。當你創建 Model 時,接下來需要創建一個遷移檔來定義資料表結構。使用以下命令來創建資料表的遷移檔:

php artisan make:migration create_news_table

這會在 database/migrations 目錄下創建一個遷移檔,然後你可以在該檔案中編寫資料表的結構。

1. 編輯遷移檔

打開剛剛創建的遷移檔,並編輯 up() 方法來定義 news 資料表的結構。以下是範例遷移檔案內容:

<?php

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

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('news', function (Blueprint $table) {
$table->id(); // 自動遞增的 id 欄位
$table->string('title')->comment('標題'); // 標題欄位
$table->text('content')->comment('內容'); // 內容欄位
$table->timestamps(); // 自動生成 created_at 和 updated_at 欄位
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('news'); // 回滾時刪除資料表
}
};

註解解析:

  • $table->id(); 自動生成一個 id 欄位,通常作為主鍵。
  • $table->string('title'); 創建一個 title 欄位,類型為 string
  • $table->text('content'); 創建一個 content 欄位,類型為 text,用於存儲文章的內容。
  • $table->timestamps(); 創建 created_atupdated_at 欄位,這是 Laravel 自動提供的時間戳記欄位。

三、執行遷移

遷移檔編寫完成後,下一步就是執行遷移來創建資料表。在終端機中運行以下命令:

php artisan migrate

執行後,news 資料表會被創建在資料庫中。

四、在路由中操作資料

現在,我們已經創建了 Model 和資料表,接下來讓我們在 routes/web.php 中寫一些程式來操作資料。

1. 新增資料

routes/web.php 中,我們可以新增一個路由來創建資料。在這個路由中,我們將使用 News::create() 方法來新增一筆資料:

<?php

use Illuminate\Support\Facades\Route;
use App\Models\News;

/*
|---------------------------------------------------------------------------
| Web Routes
|---------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

// 新增一條新聞資料
Route::get('/news', function () {
News::create([
'title' => 'London to Paris',
'content' => 'A quick flight from London to Paris with comfortable seating.',
]);
dd('News item created!');
});

註解解析:

  • News::create([...]) 這行程式會將資料插入到 news 資料表中。我們在這裡指定了 titlecontent 欄位的值。
  • dd('News item created!')Laravel 中的 Dump and Die 函數,用來輸出訊息並結束程式,幫助我們確保資料已經成功新增。

五、檢查資料庫

當你訪問 /news 路徑時,資料會被插入到資料庫中的 news 資料表。你可以使用資料庫管理工具(例如 PhpMyAdmin 或 HeidiSQL)來檢查資料表,確保資料已經成功新增。

六、結論

通過本文,我們學習了如何使用 Laravel 的 Model 和遷移來管理資料庫。具體流程包括:

  1. 創建 Model:我們通過 Artisan 命令創建了 News Model,並設置了資料表名稱及可批量賦值的欄位。
  2. 創建資料表:使用遷移來定義資料表結構並執行遷移創建資料表。
  3. 在路由中新增資料:我們在 web.php 中創建了路由,並通過 create 方法新增了一條新聞資料。

這只是 Laravel 中資料庫操作的基礎,隨著開發進程,你會發現更多高效且強大的功能,讓你的開發更具彈性與擴展性。接下來會介紹在 Laravel 中使用 MVC 架構來處理資料和前端互動。


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。

 

提醒,文章僅供正當的知識參考,文章不負任何責任。


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.