[0028]クロージャでorWhereを利用 (a=1 AND b=3 AND c=2) OR (d='abc' AND e=4)

■construct

複数条件のため、クロージャを利用します。

SELECT * FROM sample WHERE (a=1 AND b=3 AND c=2) OR (d='abc' AND e=4) のようにしたかったので以下

実際の例だと、SELECT count(*) FROM books WHERE (book_no like 'V%' AND hakkeyoi_case_fl = 4 AND book_sts = 'ES') OR (book_no like 'V%' AND air_online_kbn = 1 AND book_sts != 'RC' AND book_sts != 'CX' AND hakkeyoi_adt_cx_penalty_fix is null)

XXXController.php

              
$vals = Book::join('book_airs as a','a.book_no','=','books.book_no')->where(function($hquery){
                $hquery->where('books.book_no','like','V%')->where('a.air_sts','NA');
            })->orwhere(function($hquery){
                $hquery->where('books.book_no','like','V%')->where('books.air_online_kbn',1)->where('books.book_sts','!=','RC')->where('books.book_sts','!=','CX')->whereNull('books.hakkeyoi_adt_cx_penalty_fix');
            })->groupBy('books.book_no')->get();
    			
            

select count(*) from book_mytravels where book_no = 'xxxx' AND (sub_ins_end = 1 OR sub_ins_end2 = 1 OR sub_ins_end3 = 1);

              
$ind_end_cnt = BookMytravel::where('book_no',$book_no)->where(function($hquery){
                $hquery->orwhere('sub_ins_end',1)->orwhere('sub_ins_end2',1)->orwhere('sub_ins_end3',1);
            })->count();