😉

Laravel ::where() ではなく、::query() で書き始めるプチメリット

2021/11/25に公開
2

本題

Eloquent で、DB からデータを取得する場合、まず、::where() とかから書いたりしますが、::query() で書き始めることもできます。

ということで、::query() から書き始めた場合のちょっとしたメリットです。

(1) コード補完が効く

エディタは、VsCode に Intelephense を入れた環境です。
(Laravelは、Ver.8 と Ver.5.6 にて確認済)

画像で見ていただいた方が早いので、以下、画像です。

::query() から書き始めた場合


::where() から書き始めた場合

(2) 縦にメソッドを繋げた時、見やすくなるかも

    // 最初の where() だけ仲間はずれ感がある(ずれていて見づらい)
    $users = User::where('name', 'LIKE', 'taro%')
        ->where('email', 'LIKE', 'taro%')
        ->take(5)
        ->orderBy('id')
        ->get();

    // 見やすくなった
    $users = User::query()
        ->where('name', 'LIKE', 'taro%')
        ->where('email', 'LIKE', 'taro%')
        ->take(5)
        ->orderBy('id')
        ->get();

(おまけ)Custom Query Builders

話が長くなるので割愛しますが、Custom Query Builders と呼ばれたりするものを使う際、::query() で書き始めたりします。
詳しくは、下記のリンク等をご覧下さい。(英語サイト)
https://timacdonald.me/dedicated-eloquent-model-query-builders/
https://martinjoo.dev/build-your-own-laravel-query-builders
https://codecourse.com/courses/custom-laravel-query-builders

雑感

query()、何気にいい奴です。

Discussion

たくみんたくみん

記事ありがとうございます!
こちら速度等に影響はないのでしょうか??

nshironshiro

コメントありがとうございます。
どちらで書いても結局内部的には、すぐに同じ道を辿る事になりますので、速度的には影響ないと言えますね🚄
(1万回とか呼び出した時はどうかは分かりませんが…)