あきぞらです。
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();
これでクエリパラメータなどで動的にクエリを組むことができますね!
では、また。