大家補班日過得好嗎 XD?
不管今天是否是假日,鐵人賽的文章還是要繼續寫,我們就從昨天提到的地方接續下去吧!
Model 的建立大部分在昨天都已經講完了,今天我們就來講 Eloquent ORM 的常用語法。
首先,無論你在 Route 或是 Controller 等地方使用 Model,都需要在檔案最開頭引用。
use App/Models/User
以下是幾個 ORM 使用的方法。
取得這張資料表的所有資料。
$users = User::all();
這個語法相較 SELECT * FROM database.users;
簡潔多了吧!
若要取得特定欄位的資料可以使用 PHPer 熟悉的 foreach
,就可以取得欄位值了。
foreach ($users as $user){
echo $user->name;
}
取得 id = 1 的資料,直接幫你從 primary key 來找相對應的資料,也是非常方便。
$user = User::find(1);
// 取得特定欄位資料
echo $user->name;
Laravel ORM 的方式也讓查詢更加的簡潔方便,除此之外也可以直接輸入 SQL 語法,以應付 ORM 無法做到的複雜查詢。
例如要找特定欄位的某筆資料即可用以下語法查詢。
// where('欄位','查詢')
$user = User::where('name', 'Leo')->first();
// or
$user = User::firstWhere('name', 'Leo');
// 需要錯誤處理的狀況
$user = User::where('name', 'Leo')->firstOrFail();
first()
代表的是只抓這些資料的第一筆,原因有些資料庫欄位若不是在 unique
的狀況下可能會 query 到很多筆資料,因此 first()
語法有時可以避免掉這樣的狀況,但最好的方法仍是進行更複雜的查詢,Laravel 也可以這樣做。
$user = User::where('name', 'Leo')->where('job', 'bug Engineer')->first();
有沒有,這樣就找到了一個 job
是 bug Engineer
的 Leo
這個人了。
一些更複雜的查詢官方文件也都有收錄,如果你要做 orderBy
、count
、limit
等更精細的查詢也都可以做到。
如果需要純 SQL 語法查詢,基本上它的函數名就會跟你要做的查詢動作一樣。
DB::select('select * from users where id = ?', [1]);
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Leo']);
DB::update('update users set job = `bug Engineer` where name = ?', ['Leo']);
DB::delete('delete from users');
有些資料庫的操作是不需要返回任何數值,就可以使用 statement
的操作
DB::statement('drop table users');
今天寫到 Model 的操作中篇,明天來講如何 create
、save
、update
Model 和 Laravel 獨有的 collection
型別。
照理說這類篇幅不需要那麼長,除了我想富奸之外,就是因為在翻官方文件的時候,發現很多覺得實用又蠻重要的觀念,因此不小心就要寫到第三篇了,那我們就明天見囉!