【Laravel】個人的によく使うEloquentのWhere句まとめ


Laravelは自由かつ何でも実現できるフレームワークなので
(使いこなせているかは別として…)重宝しています。
今回は、個人的によく使うEloquentWhere句を書き出してみました。

基本

$adminUsers = User::where('role', '=', 'admin')->get();

AND検索・OR検索

whereを付け足せばAND検索になります。
OR検索をするにはorWhereを使います。

AND検索
$users = User::where('role', '=', 'admin')
             ->Where('id', '>', 10);
             ->get();
OR検索
$adminers = User::where('role', '=', 'admin')
                ->orWhere('role', '=', 'maintainer');
                ->get();

IN句で検索

IN句で検索します。
たとえば、Id0999のユーザを取得します。

IN句
$specialUsers = User::whereIn('in', [0,999])->get();

NULLのレコードを検索

NULLの値になっているレコードを取得します。
whereNullを使います。

NULL
$invalidUsers = User::whereNull('nickname')->get();

NULLでないレコードを検索

NULLでないレコードを取得します。
whereNotNullを使います。便利ですね。

NOTNULL
$validUsers = User::whereNotNull('nickname')->get();

ソート

orderByを使います。
降順は'desc'、昇順は'asc'を指定します。
またorderByではなく、latestoldestを使っても良いです。

ソート
$users = User::orderBy('id','desc')->get();
$users = User::orderBy('id','asc')->get();
$users = User::latest('id')->get();
$users = User::oldest('id')->get();

動的にWhereを追加する

条件によってクエリを変更したいとき。

$userQuery = User::query();
$userQuery = $userQuery->where('role', '=', 'member');

if ($condition1) {
    $userQuery = $userQuery->where('condition', '=', '1');
}
if ($condition2) {
    $userQuery = $userQuery->where('condition', '=', '2');
}

$users = $userQuery->get();

他にも思い出したら追記していこうと思います。
「他にもこれよく使う!」
というWhere句がありましたら是非コメント頂ければと思います!