ORM是物件關聯對映(Object Relational Mapping)。在Larvel裡提供的 Eloquent ORM能讓開發者以一個簡單、美觀的方式操作關聯式資料庫。今天就來寫一點點基本的操作,更多可以查看文件,以及Laravel資料庫相關文件。
在SQL,可能會用SELECT * FROM <TABLE>;
來取得所有資料,儘管在資料量龐大時,這樣操作並不好,但是Laravel同樣有對應的操作:
use \App\BlogPost
$posts = App\BlogPost::all();
foreach ($posts as $post) {
echo $post->title;
}
條件查詢也非常長使用到:
$post = App\BlogPost::where('id', 1)->get();
// ->orderBy('name', 'desc') // 還可以加以設定以下參數
// ->take(10)
// ->get();
用where
自然很容易從SQL轉換了解。不過,Laravel有更簡單的方式針對主鍵做查詢:
$post = App\BlogPost::find(1);
// 等同於
$post = App\BlogPost::where('active', 1)->first();
對於INSERT INTO <TABLE> Values(...)
,Laravel可以先在記憶體建立模型資料,再使用save()
儲存插入資料庫:
$post = new BlogPost;
$post->title = "Default Title";
$post->content = "Example Content";
$post->save();
要更新資料?在查詢資料、修改以後,同樣可以使用save()
更新資料:
$post = App\BlogPost::find(1);
$post->title = "New Title";
$post->content = "New Example Content";
$post->save();
不過使用update()
在語意上會更明確:
$post = App\BlogPost::find(1);
$post->title = "New Title";
$post->content = "New Example Content";
$post->update();
Update也可以直接用於更新特定欄位
App\Flight::where('active', 1) ->where('destination', 'San Diego') ->update(['delayed' => 1]);
要刪除也不是難事:
$post = App\BlogPost::find(1);
$post->delete();
還可以更簡單點透過主鍵刪除:
App\BlogPost::destroy(1);
Laravel 的 Eloquent ORM還可以做的更多事情。像是對於資料表的關係,還可以先用hasOne
、hasMany
、belongsTo
、belongsToMany
來建立關係,在之後簡化使用。
更多詳細的內容,可以參考Laravel文件中,關於資料庫的章節,以及,物件關聯對映的章節。