Laravel

【Laravel】Eloquentで動的にWhere句などのクエリを指定する方法!

あきぞらです。

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();

これでクエリパラメータなどで動的にクエリを組むことができますね!

では、また。

-Laravel

Copyright© あきぞらてっく , 2021 All Rights Reserved Powered by AFFINGER5.