【Laravel】EloquentでWhereを使う方法について



1. whereのEloquent
EloquentはLaravelのORM(Object-Relational Mapping)で、データベース操作を簡単かつ直感的に行えます。where
はEloquentでよく使われるメソッドで、条件に基づいてデータを取得したり操作したりできます。本記事では、where
のEloquentモデルを使った活用方法を解説します。
2. whereの使い方
2.1. where
Eloquentでwhere
を使う最も基本的な方法は、条件に一致するレコードを取得することです。
Article
モデルを使用して、title
がLaravel Basics
である記事を取得します。
複数条件を指定する場合も簡単です。
これはSQLのAND
条件に相当します。
2.2. orWhere
orWhere
を使うと、OR
条件を指定できます。
この場合、status
がdraft
またはviews
が100以上のレコードを取得します。

where
だけじゃなくて、orWhere
とかも教えて!
orWhere
は条件の「または」に使う。たとえば、where('status', 'draft')->orWhere('views', '>', 100)
。
2.3. 範囲条件
2.3.1. whereBetween / orWhereBetween
指定した範囲内のレコードを取得します。
上記は、views
が100以上500以下の記事を取得します。
orWhereBetween
を使うと、OR
条件で範囲を指定できます。
2.3.2. whereNotBetween / orWhereNotBetween
範囲外のレコードを取得します。
2.4. IN句
whereIn
は、指定した値のリストに一致するレコードを取得します。
2.4.1. whereNotIn
指定したリストに含まれないレコードを取得します。
2.5. Nullの判別
2.5.1. whereNull
カラムがNULL
であるレコードを取得します。
2.5.2. whereNotNull
カラムがNULL
でないレコードを取得します。
2.6. カラム同士の比較
whereColumnは2つのカラムを比較します。例えば、idより、viewsの方が大きいという条件は次のように書くことができます。
orWhereColumn
を使用すると、OR
条件も可能です。
2.7. カラムの範囲条件
2.7.1. whereBetweenColumns
カラムの値が他の2つのカラムの範囲内にあるかを確認します。
同様に、whereNotBetweenColumns
やorWhereBetweenColumns
も使用できます。
2.8. サブクエリwhere
サブクエリを使用すれば、別のクエリで取得した値を基準に条件を設定することが可能です。これにより、柔軟な条件設定が簡単に実現できます。
このクエリでは、サブクエリを用いてpublished_at(公開日)が最も新しい記事のidを取得し、それに一致する記事をwhere条件で絞り込んでいます。


2.9. Where Exists
Where Exists
を使用すると、サブクエリの結果に基づいて条件を指定できます。以下は、記事に関連付けられたコメントが存在する記事を取得する例です。