ปัญหา คือต้องการ query ข้อมูลแบบมีเงื่อนไขโดยสามารถกำหนดได้ว่าเมื่อมีการส่งค่าเท่านั้นถึงจะทำการใส่เงื่อนไขถ้าไม่มีการส่งไม่ต้องใส่เงื่อนไข
วิธีการแก้ปัญหา ทำการสร้าง function ไว้ใน where แล้วใน function ก็ทำการเขียนเงื่อนไขตามต้องการได้เลย
ตัวอย่าง
กำหนดตัวแปร
private $data = [];
ภายใน function เขียน query ข้อมูล
$res = ResModel::where(function($q){
$s = $this->data;
if($s['ProvinceId']){
$q->where('ProvinceId',$s['ProvinceId']);
}
if($s['AmphurId']){
$q->where('AmphurId',$s['AmphurId']);
}
if($s['DistrictId']){
$q->where('DistrictId',$s['DistrictId']);
}
if($s['ResName']){
$q->where('ResName', 'like', '%'.$s['ResName'].'%');
}
})->get();