iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Software Development

Laravel 隨筆學習札記系列 第 16

Day16 - 資料的守護者:如何使用 Laravel Model 的屬性

  • 分享至 

  • xImage
  •  

昨天聊到 MVC 中的 Conntroller,今天來探討 Model 是什麼呢?

Model 的基本定義

在我的理解上 Model 是與資料庫相互作用的,Model 可以執行資料庫中的的讀取、儲存更新和刪除,再將這些資料提供給 Controller 。

在 Laravel 中,Eloquent ORM 是協助 Model 與資料庫進行互動的工具,讓開發者能夠用簡單的方式進行資料操作。

在這個例子中,User 類別代表資料庫中的 users 表格。Eloquent 會自動將 User 類別與 users 表格關聯起來。

namespace App\\Models;

use Illuminate\\Database\\Eloquent\\Model;

class User extends Model {
	// 寫 Eloquent ORM 語法
}

常用屬性

Model 擁有一些非常重要的屬性,可以幫助我們更好地管理資料的存取。

$fillable

這個屬性就像是在說「哪些欄位我允許你一次性填寫」。

當你用 create()update() 方法時,Eloquent 會檢查你要填的欄位是不是在這裡列出的。如果不在,就不會填進去,這樣可以避免一些不必要的資料被誤改。

比如說,如果你只想讓用戶填寫名字、郵件和密碼,你就可以這樣設置:

protected $fillable = ['name', 'email', 'password'];

$guarded

這個屬性是 $fillable 的反向。它定義了「哪些欄位我不想讓你填寫」。通常我們會把主鍵(像 id)放在這裡,這樣就可以防止意外修改它。

protected $guarded = ['id'];

$hidden

這個屬性用來隱藏某些資料,讓它們在轉換成數組或 JSON 時不顯示。這通常是用來隱藏敏感資訊,比如密碼或 token,這樣別人就看不到。

protected $hidden = ['password', 'remember_token'];

如何呼叫 Model

在使用 Model 之前,我們需要正確地,使用 use 語句來導入 Model,例如:

use App\Models\User;

操作資料庫表格

創建資料(Create)

create() 方法是新增資料到資料庫中。

User::create([
    'name' => 'John Doe',
    'email' => 'john@example.com',
]);

讀取資料(Read)

  • 獲取所有資料:使用 all() 方法可以獲取資料表中的所有資料:
$users = User::all();
  • 獲取單個資料:使用 find() 方法根據 ID 獲取特定的資料:
$user = User::find(1); // 根據 ID 獲取
  • 根據條件查詢:使用 where() 方法可以根據條件進行查詢:
$activeUsers = User::where('account_status', 'active')->get();

更新資料(Update)

使用 update() 方法可以修改已存在的資料。我們先用 find(1) 找到該資料,然後進行更新。

$user = User::find(1); // 根據 ID 獲取
$user->update([
    'email' => 'newemail@example.com', // 更新郵件地址
]);

刪除資料(Delete)

使用 delete() 方法可以刪除資料。先用 find(1) 找到該資料,然後進行刪除。

$user = User::find(1); // 根據 ID 獲取
$user->delete(); // 刪除該用戶

使用查詢建構器

Laravel 的查詢建構器提供了更靈活的查詢方式,使用 where() 可以輕鬆構建複雜的查詢。

$users = User::where('role', 'admin')->orderBy('created_at', 'desc')->get();

相關 Eloquent ORM 可以參考這兩篇

  1. Day5 - Eloquent ORM 是魔法師?
  2. Day6 - 知道 Eloquent ORM 魔術師的隱藏技能嗎?

參考資料

  1. Laravel初學者指南:深入探索Model的使用與應用
  2. What are Models and Views in Laravel?
  3. Fillable, Guarded in Laravel ! What’s the difference
  4. Model 跟 Migration在Laravel中的作用是甚麼?有甚麼差別?
  5. Laravel初學者指南:Model如何被Controller所使用

踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!

吊人牌:轉職的過程可能會面臨許多挑戰,特別是當我們的學科背景、先前的就業道路和未來職業路徑不一致時。不過,這張牌也暗示著靈活性和重新思考的能力。或許可以從過去的經驗中提煉出可轉換的技能,或者從新的角度看待自己現有的能力。練習用不同的思維方式來看待問題,開放心態,能幫助我們找到新的機會和解決方案。每一步都能成為成長的契機。

You must not let anyone define your limits because of where you come from. Your only limit is your soul.

別讓任何人用出身定義你,你唯一的限制只有你的靈魂。

— 料理鼠王


上一篇
Day15 - Laravel 的 Controller:讓代碼更有條理
下一篇
Day17 - 探索 Laravel 的視覺魔法:使用 Blade 的佈局與繼承
系列文
Laravel 隨筆學習札記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言