【Laravel】 クエリビルダでwhereを入れ子にする

入れ子の書き方

以下のSQLをクエリビルダで記述します。

sql
select * from table1
where column1 = value1
and (
     column2 = value2
  or column3 = value3
)
		return \DB::table('table1')
    ->where('column1', value1)
		->where(function($query){
			$query->where('column2', value2)
                     ->orWhere('column3', value3)
		})
		->get();

入れ子(複数階層)

あまり使う機会はないかもしれない複数階層の入れ子です。

    \DB::table('table1')
    ->where(function($query){
        $query->where('column1', value1)
                       ->orWhere(function($query){
                                $query->where('column2', value2);
                        });
    })
    ->get();
whereはクロージャを引数に取れるので、このようにいくらでも入れ子にできます。

Laravel

Posted by kobainmac