目的
- クエリビルダにて「Aカラムの値が〇〇、もしくは✕✕の情報を取得する」命令を記載する際、
orWhere()
メソッドではなくwhereIn()
メソッドを使って記載を短縮する方法をまとめる
ご注意
- 下記の説明で直接ソースコード上に数字をハードコーディング(いわゆるマジックナンバー)されているが、これはアンチパターンである。
- 本来このような書き方は避けたほうが良いが説明のために致し方なく記載する。
- 本当は定数を記載するファイルや
const
などを用いてその数字の意味を記載してあげてほしい。
情報
- 下記のように記載されたクエリビルダがあるとする。
- これはusersテーブルのstatus_idが2か3のレコードを取得するクエリビルダである。
- この書き方でも問題ないが、同じカラムに対しての条件で
orWhere()
メソッド以外の選択肢もある。
$query
->where( 'users.status_id', '=', 2 )
->orWhere( 'users.status_id', '=', 3 );
方法
-
whereIn()
メソッドを使って下記のように記載する事ができる。 -
whereIn( '判定したいテーブル名.判定したいカラム名', [判定したいカラム名の値として期待されるものを配列状に記載する])
のように記載する。
$query->whereIn( 'users.status_id', [2, 3] );