Lucentyr
Lucentyr

Reputation: 297

Laravel whereHas on multiple rows

$search = Workforce::whereHas('task_schedule', function($q) use($request){
        if($request->search_schedule_day != null){
            foreach($request->search_schedule_day as $day){
                /*$q->whereIn('schedule_day', 'like', '%'. $day .'%');*/
                var_dump($day);
            }
        }
        if($request->search_time_in != null){
            $q->where('schedule_time_in', 'like', '%' . $request->search_time_in . '%');
        }
        if($request->search_time_out != null){
            $q->where('schedule_time_out', 'like', '%' . $request->search_time_out . '%');
        }
    })

I am currently making an advanced search feature, and I have encountered this problem wherein I have an array of search_schedule[] . Then in the database, it is saved one day per row. How do I set a query for searching the days in that array ?

Edit

            if($request->search_schedule_day != null){
            foreach($request->search_schedule_day as $day){
                /*$q->whereIn('schedule_day', 'like', '%'. $day .'%');*/
                var_dump($day);
            }
        }

How can I set a query in the above block of code wherein it checks rows in database where column = $request->search_schedule_day

Upvotes: 1

Views: 590

Answers (1)

Wreigh
Wreigh

Reputation: 3287

If you are trying to check whether the model's schedule_day is present in $request->search_schedule_day, you can try this:

if($request->search_schedule_day != null) {
    $q->where(function($query)use($request) { // group orWheres
        for ($request->search_schedule_date as $day) {
            $query->orWhere('schedule_day', $day);
        }
    }
}

Upvotes: 2

Related Questions