昨天聊到 MVC 中的 Conntroller,今天來探討 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 之前,我們需要正確地,使用 use
語句來導入 Model,例如:
use App\Models\User;
create()
方法是新增資料到資料庫中。
User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
all()
方法可以獲取資料表中的所有資料:$users = User::all();
find()
方法根據 ID 獲取特定的資料:$user = User::find(1); // 根據 ID 獲取
where()
方法可以根據條件進行查詢:$activeUsers = User::where('account_status', 'active')->get();
使用 update()
方法可以修改已存在的資料。我們先用 find(1)
找到該資料,然後進行更新。
$user = User::find(1); // 根據 ID 獲取
$user->update([
'email' => 'newemail@example.com', // 更新郵件地址
]);
使用 delete()
方法可以刪除資料。先用 find(1)
找到該資料,然後進行刪除。
$user = User::find(1); // 根據 ID 獲取
$user->delete(); // 刪除該用戶
Laravel 的查詢建構器提供了更靈活的查詢方式,使用 where()
可以輕鬆構建複雜的查詢。
$users = User::where('role', 'admin')->orderBy('created_at', 'desc')->get();
相關 Eloquent ORM 可以參考這兩篇
參考資料
踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!
吊人牌:轉職的過程可能會面臨許多挑戰,特別是當我們的學科背景、先前的就業道路和未來職業路徑不一致時。不過,這張牌也暗示著靈活性和重新思考的能力。或許可以從過去的經驗中提煉出可轉換的技能,或者從新的角度看待自己現有的能力。練習用不同的思維方式來看待問題,開放心態,能幫助我們找到新的機會和解決方案。每一步都能成為成長的契機。
You must not let anyone define your limits because of where you come from. Your only limit is your soul.
別讓任何人用出身定義你,你唯一的限制只有你的靈魂。
— 料理鼠王