在 Laravel 中,操作資料庫的核心是透過 Model 來進行的。Model 不僅負責與資料表進行溝通,它還提供了一個簡單而直觀的方式來進行資料庫的增、刪、改、查等操作。今天,將學習如何建立 Model,創建資料表,並且如何在路由中進行資料操作。
在 Laravel 中,建立 Model 可以使用 Artisan 命令。當你創建一個新的 Model 時,通常它對應的是資料表的單數型態,而資料表則是複數型態,命名的時候可能需要區分。
首先,打開你的終端機,進入你的 Laravel 專案目錄,然後執行以下命令:
php artisan make:model News
這個命令會在 app/Models/
目錄下創建一個新的 News
Model。接下來,你可以開始撰寫這個 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
目錄下創建一個遷移檔,然後你可以在該檔案中編寫資料表的結構。
打開剛剛創建的遷移檔,並編輯 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_at
和 updated_at
欄位,這是 Laravel 自動提供的時間戳記欄位。遷移檔編寫完成後,下一步就是執行遷移來創建資料表。在終端機中運行以下命令:
php artisan migrate
執行後,news
資料表會被創建在資料庫中。
現在,我們已經創建了 Model 和資料表,接下來讓我們在 routes/web.php
中寫一些程式來操作資料。
在 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
資料表中。我們在這裡指定了 title
和 content
欄位的值。dd('News item created!')
是 Laravel
中的 Dump and Die
函數,用來輸出訊息並結束程式,幫助我們確保資料已經成功新增。當你訪問 /news
路徑時,資料會被插入到資料庫中的 news
資料表。你可以使用資料庫管理工具(例如 PhpMyAdmin 或 HeidiSQL)來檢查資料表,確保資料已經成功新增。
通過本文,我們學習了如何使用 Laravel 的 Model 和遷移來管理資料庫。具體流程包括:
News
Model,並設置了資料表名稱及可批量賦值的欄位。web.php
中創建了路由,並通過 create
方法新增了一條新聞資料。這只是 Laravel 中資料庫操作的基礎,隨著開發進程,你會發現更多高效且強大的功能,讓你的開發更具彈性與擴展性。接下來會介紹在 Laravel 中使用 MVC 架構來處理資料和前端互動。
對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!
大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。
提醒,文章僅供正當的知識參考,文章不負任何責任。