LoginSignup
0
0

More than 1 year has passed since last update.

laravel クエリビルダ or条件をグループ化する

Last updated at Posted at 2021-11-25

目的

  • クエリビルダでor条件をグループ化する方法をまとめる。

概要

  • usersテーブルにflagカラムがあったとする。
  • flagカラムにはintの0、intの1、nullいずれか格納されている。
  • where句を用いてflagカラムが1もしくはnullのレコードを取得したい。
  • 一見where('flag', '!=', 0)とすれば良さそうだが、nullはwhereでは判定できない。
  • orWhereNull('flag')where('flag', '=', 1)を用いれば良さそうだが、いずれこちらのクエリビルダが複雑になった時にorWhereNull('flag')があると絞り込み条件が「その他のwhere条件、もしくはflagカラムがnullのもの」となり、意図しない値が返される可能性がある。

方法

  • 下記のように記載することで問題は解決する。(と思う。)

    $users = DB::table('users')
        ->where(function($query) {
            $query->where('flag', 1)
                  ->orWhereNull('flag');
        })
        ->get();
    

参考文献

関連記事

0
0
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
0
0