Laravelは自由かつ何でも実現できるフレームワークなので
(使いこなせているかは別として…)重宝しています。
今回は、個人的によく使うEloquent
のWhere
句を書き出してみました。
基本
$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句で検索します。
たとえば、Id
が0
か999
のユーザを取得します。
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
ではなく、latest
、oldest
を使っても良いです。
ソート
$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句がありましたら是非コメント頂ければと思います!