Featured image of post Laravel Eloquent Or Query Builder

Laravel Eloquent Or Query Builder

前言

使用的版本

Laravel: 7
php: 7.3

我們都知道在 Laravel 裡面取得資料庫資料可以使用 Eloquent ORMQuery Builder
今天就來聊聊兩者到底差在哪裡巴 ~

主要內容

Eloquent ORM

透過物件的方式調用資料,
可參考 文件,相關語法如下

1
2
3
use App\Models\User;
// ...
User::where('name', 'Jason')->first();

Query Builder

直接對資料表進行調用,
可先參考 文件,相關語法如下

1
2
3
use Illuminate\Support\Facades\DB;
// ...
DB::table('users')->where('name', 'Jason')->first();

以上兩段程式碼,都是在取 name = Jason 的人,取出來的值也能直接使用

速度比較

因為我這段SQL比較簡單,所以很難看出速度哪個比較快
於是我網路上找了一下資源,如下所示

(圖片資料參考於 頁面)

Query Builder 調用的速度上比 Eloquent 還要快很多 (將近一倍)
這樣你說 Query Builder 比較快,執行上語法也差異不大,為何還要選擇使用 Eloquent 呢?

Eloquent 優勢在哪裡?

  1. 增加程式碼閱讀
  2. relationship 關聯其他 Model
  3. Accessors
  4. Soft Deletes
  5. Scopes
  6. Mutators & Casting …… 等等功能

雖然 Eloquent 的效能比較不好,但因著這些強大功能覺得也是種取捨

結論

我大部分的功能都會使用 EloquentCollection 達成一個組合技,規劃並完成,
不過若是一次性或不太會異動的功能,感覺就可以考慮看看 Query Builder
雖然我還是都使用 Eloquent 畢竟遇到後續的需求修改,會相對提升可塑性(好讀、好改)

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy