Search code examples
laravellaravel-livewire

How to Add Multi-filter on Search Laravel Livewire


So I have made a simple search bar which is working fine, but I'm lost on adding 2 filters (schoolyear 'sy') and (semester 'sem') using drop down. If user selects a specific schoolyear or semester the search would only display data containing the specific schoolyear and semester.

$allschedule = DB::table('load_schedule')
        ->leftjoin('emp_info', 'load_schedule.faculty_id', '=','emp_info.user_id')
        
        ->orderBy('lastname', 'ASC')
        ->orWhere('section', 'like', $src)
        ->orWhere('room', 'like', $src)
        ->orWhere('lastname', 'like', $src)
        ->orWhere('firstname', 'like', $src)
        ->select('load_schedule.*', 'emp_info.firstname', 'emp_info.lastname')
        ->paginate(10);

Solution

  • You should wrap all the orWhere statments together inside where

    $allschedule = DB::table('load_schedule')
            ->leftjoin('emp_info', 'load_schedule.faculty_id', '=', 'emp_info.user_id')
                ->orderBy('lastname', 'ASC')
            ->where(function($query) use ($src){
            return $query->orWhere('section', 'like', $src)
            ->orWhere('room', 'like', $src)
            ->orWhere('lastname', 'like', $src)
            ->orWhere('firstname', 'like', $src);
            })
            ->select('load_schedule.*', 'emp_info.firstname', 'emp_info.lastname')
            ->paginate(10);