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句がありましたら是非コメント頂ければと思います!