Eloquent ORM 是什麼
Laravel 內建了名為 Eloquent 的物件關聯映射器(ORM)。 Eloquent 讓與資料庫的互動變得簡單,並實作了 ActiveRecord 模式。 使用 Eloquent 時,你會為每個資料表建立對應的「模型」類別。 透過模型即可完成資料的取得、新增、更新與刪除。使用 Eloquent 前,請先在
config/database.php 設定資料庫連線。
預設會採用 .env 檔案中的 DB_* 設定。建立模型
以make:model Artisan 指令建立新模型。
-m 選項。
app/Models 目錄下。
模型與資料表的對應
Eloquent 會自動由類別名稱推測資料表名稱: 將類別名轉為 snake_case 且複數形式即為資料表名稱。
若資料表名稱不符命名慣例,可在模型中定義
$table 屬性明確指定。
時間戳記
Eloquent 預設會自動管理created_at 與 updated_at 欄位。
在 migration 中加入 $table->timestamps(),模型儲存 / 更新時就會自動設定值。
若要關閉自動時間戳記,可將 $timestamps 設為 false。
Mass Assignment 保護
以 Eloquent 一次匯入資料時,需要進行 mass assignment 保護設定。fillable
以$fillable 屬性指定允許批次指派的欄位。
guarded
反之,若要指定「不允許」批次指派的欄位,使用$guarded。
Eloquent 查詢執行流程
以下示意User::where()->get() 這類查詢的內部執行流程。
基本 CRUD 操作
讀取(Read)
取得所有紀錄:建立(Create)
以create 方法建立一筆紀錄(需先設定 $fillable)。
更新(Update)
取得模型,修改值後呼叫save 即可更新。
update 方法可一次更新多個欄位。
刪除(Delete)
使用delete 方法刪除紀錄。
基本查詢方法
實戰範例:以 Post 模型進行資料操作
以下是操作透過 migration 建立的posts 資料表的控制器範例:
模型事件的生命週期
呼叫save() 時會觸發的事件流程如下。新建立或更新會觸發不同事件,但 saving、saved 兩者皆會觸發。
下一步
Migrations
複習如何用 migration 建立 Eloquent 所使用的資料表。