
あきぞらです。
Laravelの開発をしていて、Eloquentのクエリを動的に組みたいときがあります。
たとえば、
「Aのパラメータが渡ってきたときにAでWhere句で検索する」
「Bのパラメータが渡ってきたときにBでソートする」
などです。
そこで今回は、動的にクエリの条件を指定する方法を紹介していきます。
query()を使って条件を指定する
たとえば以下のようにquery()を利用することで、
条件を追加していくことができます。
$userQuery = User::query();
$userQuery = $userQuery->where('role', '=', 'adminer');
$users = $userQuery->get();
if文でクエリを動的に生成する
if文で条件を指定することで、
たとえば以下のようにクエリを動的に生成することができます。
$userQuery = User::query();
// $keyが'role'という文字列だったら
if ($key == 'role') {
$userQuery = $userQuery->where('role', '=', 'adminer');
}
// $keyが'user_number'という文字列だったら
if ($key == 'user_number') {
$userQuery = $userQuery->orderBy('user_number', 'asc');
}
$users = $userQuery->get();
これでクエリパラメータなどで動的にクエリを組むことができますね!
では、また。