9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】個人的によく使うEloquentのWhere句まとめ

Last updated at Posted at 2021-06-19

Laravelは自由かつ何でも実現できるフレームワークなので
(使いこなせているかは別として…)重宝しています。
今回は、個人的によく使うEloquentWhere句を書き出してみました。

基本

$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句で検索します。
たとえば、Id0999のユーザを取得します。

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ではなく、latestoldestを使っても良いです。

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

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?