iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
0
tags: 2019鐵人賽 Laravel database query builder

前言

延續昨天的話題,Laravel 為了簡化 sql 語法,把 sql 搜尋指令( ex: selectinsertupdatedelete...) 設置成「查詢建構器」 Builder 底下的方法,而我們在 DB facade 上使用 table() 就會回傳一個 Builder 實例,所以我們就可以利用這些方法下達 sql 指令。

除了簡化語法之外,我們也可以透過「鏈結語法」繼續下達查詢指令。
說的有點抽象,我們直接看下去吧。

查詢建構器

查詢建構器最大的好處就是簡化了查訪資料庫的語句,也就是不用再寫一堆煩人 sql 語句。

基本使用方法

// 連線到資料庫,使用原生 sql 語法才需要
DB::connection('mysql');

//取得資料
    //原生 sql 語法
    $users = DB::select('select * from users);
    //使用查詢建構器
    $users = DB::table('users')->get();

get 方法取得的結果,都是 Illuminate\Support\Collection (集合)實例,每個都是 PHP StdClass 物件。

1. 由於取出來的資料是 集合,所以如果資料想再作處理,可以直接在用集合的鏈結語法處理資料,例如 pluck chunk ...

2. 由於每筆資料都是 stdClass,所以可以把存取的欄位當作物件的一個屬性來存取每個欄位的值

鏈結語法

For Example:

$users = DB::table('users')->where('id', '>', 0)->get();

使用「鏈結語法」的時候就要特別注意,現在是還在「查詢建構器」裡面,還是已經取得結果了,這決定了後面可用的「鏈結語法」為何。

以上面的例子來看到 where 語句結束時都還屬於下達搜尋指令,也就是還在 Builder 裡面,也就是說我們可以繼續鏈結 wherejoinorderBY ...等方法。
但是一但鏈結了 get,他就會變更為集合實例,就只能鏈結集合可以用的方法了。

至於集合又是什麼概念,我們明天討論


上一篇
Day 26 - Laravel Database 篇 part I
下一篇
Day 28 - Laravel Database 篇 part III
系列文
新手後端工程師的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言